// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
// an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by google-apis-code-generator 1.5.1
//     C# generator version: 1.22.0
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

/**
 * \brief
 *   Google Play Developer API Version v2
 *
 * \section ApiInfo API Version Information
 *    <table>
 *      <tr><th>API
 *          <td><a href='https://developers.google.com/android-publisher'>Google Play Developer API</a>
 *      <tr><th>API Version<td>v2
 *      <tr><th>API Rev<td>20170222 (783)
 *      <tr><th>API Docs
 *          <td><a href='https://developers.google.com/android-publisher'>
 *              https://developers.google.com/android-publisher</a>
 *      <tr><th>Discovery Name<td>androidpublisher
 *    </table>
 *
 * \section ForMoreInfo For More Information
 *
 * The complete API documentation for using Google Play Developer API can be found at
 * <a href='https://developers.google.com/android-publisher'>https://developers.google.com/android-publisher</a>.
 *
 * For more information about the Google APIs Client Library for .NET, see
 * <a href='https://developers.google.com/api-client-library/dotnet/get_started'>
 * https://developers.google.com/api-client-library/dotnet/get_started</a>
 */

namespace Google.Apis.AndroidPublisher.v2
{
    /// <summary>The AndroidPublisher Service.</summary>
    public class AndroidPublisherService : Google.Apis.Services.BaseClientService
    {
        /// <summary>The API version.</summary>
        public const string Version = "v2";

        /// <summary>The discovery version used to generate this service.</summary>
        public static Google.Apis.Discovery.DiscoveryVersion DiscoveryVersionUsed =
            Google.Apis.Discovery.DiscoveryVersion.Version_1_0;

        /// <summary>Constructs a new service.</summary>
        public AndroidPublisherService() :
            this(new Google.Apis.Services.BaseClientService.Initializer()) {}

        /// <summary>Constructs a new service.</summary>
        /// <param name="initializer">The service initializer.</param>
        public AndroidPublisherService(Google.Apis.Services.BaseClientService.Initializer initializer)
            : base(initializer)
        {
            edits = new EditsResource(this);
            entitlements = new EntitlementsResource(this);
            inappproducts = new InappproductsResource(this);
            purchases = new PurchasesResource(this);
            reviews = new ReviewsResource(this);
        }

        /// <summary>Gets the service supported features.</summary>
        public override System.Collections.Generic.IList<string> Features
        {
            get { return new string[0]; }
        }

        /// <summary>Gets the service name.</summary>
        public override string Name
        {
            get { return "androidpublisher"; }
        }

        /// <summary>Gets the service base URI.</summary>
        public override string BaseUri
        {
            get { return "https://www.googleapis.com/androidpublisher/v2/applications/"; }
        }

        /// <summary>Gets the service base path.</summary>
        public override string BasePath
        {
            get { return "androidpublisher/v2/applications/"; }
        }

        /// <summary>Available OAuth 2.0 scopes for use with the Google Play Developer API.</summary>
        public class Scope
        {
            /// <summary>View and manage your Google Play Developer account</summary>
            public static string Androidpublisher = "https://www.googleapis.com/auth/androidpublisher";

        }



        private readonly EditsResource edits;

        /// <summary>Gets the Edits resource.</summary>
        public virtual EditsResource Edits
        {
            get { return edits; }
        }

        private readonly EntitlementsResource entitlements;

        /// <summary>Gets the Entitlements resource.</summary>
        public virtual EntitlementsResource Entitlements
        {
            get { return entitlements; }
        }

        private readonly InappproductsResource inappproducts;

        /// <summary>Gets the Inappproducts resource.</summary>
        public virtual InappproductsResource Inappproducts
        {
            get { return inappproducts; }
        }

        private readonly PurchasesResource purchases;

        /// <summary>Gets the Purchases resource.</summary>
        public virtual PurchasesResource Purchases
        {
            get { return purchases; }
        }

        private readonly ReviewsResource reviews;

        /// <summary>Gets the Reviews resource.</summary>
        public virtual ReviewsResource Reviews
        {
            get { return reviews; }
        }
    }

    ///<summary>A base abstract class for AndroidPublisher requests.</summary>
    public abstract class AndroidPublisherBaseServiceRequest<TResponse> : Google.Apis.Requests.ClientServiceRequest<TResponse>
    {
        ///<summary>Constructs a new AndroidPublisherBaseServiceRequest instance.</summary>
        protected AndroidPublisherBaseServiceRequest(Google.Apis.Services.IClientService service)
            : base(service)
        {
        }

        /// <summary>Data format for the response.</summary>
        /// [default: json]
        [Google.Apis.Util.RequestParameterAttribute("alt", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<AltEnum> Alt { get; set; }

        /// <summary>Data format for the response.</summary>
        public enum AltEnum
        {
            /// <summary>Responses with Content-Type of application/json</summary>
            [Google.Apis.Util.StringValueAttribute("json")]
            Json,
        }

        /// <summary>Selector specifying which fields to include in a partial response.</summary>
        [Google.Apis.Util.RequestParameterAttribute("fields", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Fields { get; set; }

        /// <summary>API key. Your API key identifies your project and provides you with API access, quota, and reports.
        /// Required unless you provide an OAuth 2.0 token.</summary>
        [Google.Apis.Util.RequestParameterAttribute("key", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Key { get; set; }

        /// <summary>OAuth 2.0 token for the current user.</summary>
        [Google.Apis.Util.RequestParameterAttribute("oauth_token", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string OauthToken { get; set; }

        /// <summary>Returns response with indentations and line breaks.</summary>
        /// [default: true]
        [Google.Apis.Util.RequestParameterAttribute("prettyPrint", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<bool> PrettyPrint { get; set; }

        /// <summary>Available to use for quota purposes for server-side applications. Can be any arbitrary string
        /// assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.</summary>
        [Google.Apis.Util.RequestParameterAttribute("quotaUser", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string QuotaUser { get; set; }

        /// <summary>IP address of the site where the request originates. Use this if you want to enforce per-user
        /// limits.</summary>
        [Google.Apis.Util.RequestParameterAttribute("userIp", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string UserIp { get; set; }

        /// <summary>Initializes AndroidPublisher parameter list.</summary>
        protected override void InitParameters()
        {
            base.InitParameters();

            RequestParameters.Add(
                "alt", new Google.Apis.Discovery.Parameter
                {
                    Name = "alt",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "json",
                    Pattern = null,
                });
            RequestParameters.Add(
                "fields", new Google.Apis.Discovery.Parameter
                {
                    Name = "fields",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "key", new Google.Apis.Discovery.Parameter
                {
                    Name = "key",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "oauth_token", new Google.Apis.Discovery.Parameter
                {
                    Name = "oauth_token",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "prettyPrint", new Google.Apis.Discovery.Parameter
                {
                    Name = "prettyPrint",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "true",
                    Pattern = null,
                });
            RequestParameters.Add(
                "quotaUser", new Google.Apis.Discovery.Parameter
                {
                    Name = "quotaUser",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "userIp", new Google.Apis.Discovery.Parameter
                {
                    Name = "userIp",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
        }
    }

    /// <summary>The "edits" collection of methods.</summary>
    public class EditsResource
    {
        private const string Resource = "edits";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public EditsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;
            apklistings = new ApklistingsResource(service);
            apks = new ApksResource(service);
            deobfuscationfiles = new DeobfuscationfilesResource(service);
            details = new DetailsResource(service);
            expansionfiles = new ExpansionfilesResource(service);
            images = new ImagesResource(service);
            listings = new ListingsResource(service);
            testers = new TestersResource(service);
            tracks = new TracksResource(service);

        }

        private readonly ApklistingsResource apklistings;

        /// <summary>Gets the Apklistings resource.</summary>
        public virtual ApklistingsResource Apklistings
        {
            get { return apklistings; }
        }

        /// <summary>The "apklistings" collection of methods.</summary>
        public class ApklistingsResource
        {
            private const string Resource = "apklistings";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public ApklistingsResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;

            }


            /// <summary>Deletes the APK-specific localized listing for a specified APK and language code.</summary>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="apkVersionCode">The APK version code whose APK-specific listings should be read or modified.</param>
            ///
            /// <param name="language">The language code (a BCP-47 language tag) of the APK-specific localized listing to read or
            /// modify. For example, to select Austrian German, pass "de-AT".</param>
            public virtual DeleteRequest Delete(string packageName, string editId, int apkVersionCode, string language)
            {
                return new DeleteRequest(service, packageName, editId, apkVersionCode, language);
            }

            /// <summary>Deletes the APK-specific localized listing for a specified APK and language code.</summary>
            public class DeleteRequest : AndroidPublisherBaseServiceRequest<string>
            {
                /// <summary>Constructs a new Delete request.</summary>
                public DeleteRequest(Google.Apis.Services.IClientService service, string packageName, string editId, int apkVersionCode, string language)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    ApkVersionCode = apkVersionCode;
                    Language = language;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The APK version code whose APK-specific listings should be read or modified.</summary>
                [Google.Apis.Util.RequestParameterAttribute("apkVersionCode", Google.Apis.Util.RequestParameterType.Path)]
                public virtual int ApkVersionCode { get; private set; }

                /// <summary>The language code (a BCP-47 language tag) of the APK-specific localized listing to read or
                /// modify. For example, to select Austrian German, pass "de-AT".</summary>
                [Google.Apis.Util.RequestParameterAttribute("language", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Language { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "delete"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "DELETE"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}"; }
                }

                /// <summary>Initializes Delete parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "apkVersionCode", new Google.Apis.Discovery.Parameter
                        {
                            Name = "apkVersionCode",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "language", new Google.Apis.Discovery.Parameter
                        {
                            Name = "language",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Deletes all the APK-specific localized listings for a specified APK.</summary>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="apkVersionCode">The APK version code whose APK-specific listings should be read or modified.</param>
            public virtual DeleteallRequest Deleteall(string packageName, string editId, int apkVersionCode)
            {
                return new DeleteallRequest(service, packageName, editId, apkVersionCode);
            }

            /// <summary>Deletes all the APK-specific localized listings for a specified APK.</summary>
            public class DeleteallRequest : AndroidPublisherBaseServiceRequest<string>
            {
                /// <summary>Constructs a new Deleteall request.</summary>
                public DeleteallRequest(Google.Apis.Services.IClientService service, string packageName, string editId, int apkVersionCode)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    ApkVersionCode = apkVersionCode;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The APK version code whose APK-specific listings should be read or modified.</summary>
                [Google.Apis.Util.RequestParameterAttribute("apkVersionCode", Google.Apis.Util.RequestParameterType.Path)]
                public virtual int ApkVersionCode { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "deleteall"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "DELETE"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/apks/{apkVersionCode}/listings"; }
                }

                /// <summary>Initializes Deleteall parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "apkVersionCode", new Google.Apis.Discovery.Parameter
                        {
                            Name = "apkVersionCode",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Fetches the APK-specific localized listing for a specified APK and language code.</summary>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="apkVersionCode">The APK version code whose APK-specific listings should be read or modified.</param>
            ///
            /// <param name="language">The language code (a BCP-47 language tag) of the APK-specific localized listing to read or
            /// modify. For example, to select Austrian German, pass "de-AT".</param>
            public virtual GetRequest Get(string packageName, string editId, int apkVersionCode, string language)
            {
                return new GetRequest(service, packageName, editId, apkVersionCode, language);
            }

            /// <summary>Fetches the APK-specific localized listing for a specified APK and language code.</summary>
            public class GetRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.ApkListing>
            {
                /// <summary>Constructs a new Get request.</summary>
                public GetRequest(Google.Apis.Services.IClientService service, string packageName, string editId, int apkVersionCode, string language)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    ApkVersionCode = apkVersionCode;
                    Language = language;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The APK version code whose APK-specific listings should be read or modified.</summary>
                [Google.Apis.Util.RequestParameterAttribute("apkVersionCode", Google.Apis.Util.RequestParameterType.Path)]
                public virtual int ApkVersionCode { get; private set; }

                /// <summary>The language code (a BCP-47 language tag) of the APK-specific localized listing to read or
                /// modify. For example, to select Austrian German, pass "de-AT".</summary>
                [Google.Apis.Util.RequestParameterAttribute("language", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Language { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "get"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}"; }
                }

                /// <summary>Initializes Get parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "apkVersionCode", new Google.Apis.Discovery.Parameter
                        {
                            Name = "apkVersionCode",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "language", new Google.Apis.Discovery.Parameter
                        {
                            Name = "language",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Lists all the APK-specific localized listings for a specified APK.</summary>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="apkVersionCode">The APK version code whose APK-specific listings should be read or modified.</param>
            public virtual ListRequest List(string packageName, string editId, int apkVersionCode)
            {
                return new ListRequest(service, packageName, editId, apkVersionCode);
            }

            /// <summary>Lists all the APK-specific localized listings for a specified APK.</summary>
            public class ListRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.ApkListingsListResponse>
            {
                /// <summary>Constructs a new List request.</summary>
                public ListRequest(Google.Apis.Services.IClientService service, string packageName, string editId, int apkVersionCode)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    ApkVersionCode = apkVersionCode;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The APK version code whose APK-specific listings should be read or modified.</summary>
                [Google.Apis.Util.RequestParameterAttribute("apkVersionCode", Google.Apis.Util.RequestParameterType.Path)]
                public virtual int ApkVersionCode { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "list"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/apks/{apkVersionCode}/listings"; }
                }

                /// <summary>Initializes List parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "apkVersionCode", new Google.Apis.Discovery.Parameter
                        {
                            Name = "apkVersionCode",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Updates or creates the APK-specific localized listing for a specified APK and language code.
            /// This method supports patch semantics.</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="apkVersionCode">The APK version code whose APK-specific listings should be read or modified.</param>
            ///
            /// <param name="language">The language code (a BCP-47 language tag) of the APK-specific localized listing to read or
            /// modify. For example, to select Austrian German, pass "de-AT".</param>
            public virtual PatchRequest Patch(Google.Apis.AndroidPublisher.v2.Data.ApkListing body, string packageName, string editId, int apkVersionCode, string language)
            {
                return new PatchRequest(service, body, packageName, editId, apkVersionCode, language);
            }

            /// <summary>Updates or creates the APK-specific localized listing for a specified APK and language code.
            /// This method supports patch semantics.</summary>
            public class PatchRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.ApkListing>
            {
                /// <summary>Constructs a new Patch request.</summary>
                public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.ApkListing body, string packageName, string editId, int apkVersionCode, string language)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    ApkVersionCode = apkVersionCode;
                    Language = language;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The APK version code whose APK-specific listings should be read or modified.</summary>
                [Google.Apis.Util.RequestParameterAttribute("apkVersionCode", Google.Apis.Util.RequestParameterType.Path)]
                public virtual int ApkVersionCode { get; private set; }

                /// <summary>The language code (a BCP-47 language tag) of the APK-specific localized listing to read or
                /// modify. For example, to select Austrian German, pass "de-AT".</summary>
                [Google.Apis.Util.RequestParameterAttribute("language", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Language { get; private set; }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.AndroidPublisher.v2.Data.ApkListing Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "patch"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "PATCH"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}"; }
                }

                /// <summary>Initializes Patch parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "apkVersionCode", new Google.Apis.Discovery.Parameter
                        {
                            Name = "apkVersionCode",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "language", new Google.Apis.Discovery.Parameter
                        {
                            Name = "language",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Updates or creates the APK-specific localized listing for a specified APK and language
            /// code.</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="apkVersionCode">The APK version code whose APK-specific listings should be read or modified.</param>
            ///
            /// <param name="language">The language code (a BCP-47 language tag) of the APK-specific localized listing to read or
            /// modify. For example, to select Austrian German, pass "de-AT".</param>
            public virtual UpdateRequest Update(Google.Apis.AndroidPublisher.v2.Data.ApkListing body, string packageName, string editId, int apkVersionCode, string language)
            {
                return new UpdateRequest(service, body, packageName, editId, apkVersionCode, language);
            }

            /// <summary>Updates or creates the APK-specific localized listing for a specified APK and language
            /// code.</summary>
            public class UpdateRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.ApkListing>
            {
                /// <summary>Constructs a new Update request.</summary>
                public UpdateRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.ApkListing body, string packageName, string editId, int apkVersionCode, string language)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    ApkVersionCode = apkVersionCode;
                    Language = language;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The APK version code whose APK-specific listings should be read or modified.</summary>
                [Google.Apis.Util.RequestParameterAttribute("apkVersionCode", Google.Apis.Util.RequestParameterType.Path)]
                public virtual int ApkVersionCode { get; private set; }

                /// <summary>The language code (a BCP-47 language tag) of the APK-specific localized listing to read or
                /// modify. For example, to select Austrian German, pass "de-AT".</summary>
                [Google.Apis.Util.RequestParameterAttribute("language", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Language { get; private set; }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.AndroidPublisher.v2.Data.ApkListing Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "update"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "PUT"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}"; }
                }

                /// <summary>Initializes Update parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "apkVersionCode", new Google.Apis.Discovery.Parameter
                        {
                            Name = "apkVersionCode",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "language", new Google.Apis.Discovery.Parameter
                        {
                            Name = "language",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }
        }
        private readonly ApksResource apks;

        /// <summary>Gets the Apks resource.</summary>
        public virtual ApksResource Apks
        {
            get { return apks; }
        }

        /// <summary>The "apks" collection of methods.</summary>
        public class ApksResource
        {
            private const string Resource = "apks";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public ApksResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;

            }


            /// <summary>Creates a new APK without uploading the APK itself to Google Play, instead hosting the APK at a
            /// specified URL. This function is only available to enterprises using Google Play for Work whose
            /// application is configured to restrict distribution to the enterprise domain.</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            public virtual AddexternallyhostedRequest Addexternallyhosted(Google.Apis.AndroidPublisher.v2.Data.ApksAddExternallyHostedRequest body, string packageName, string editId)
            {
                return new AddexternallyhostedRequest(service, body, packageName, editId);
            }

            /// <summary>Creates a new APK without uploading the APK itself to Google Play, instead hosting the APK at a
            /// specified URL. This function is only available to enterprises using Google Play for Work whose
            /// application is configured to restrict distribution to the enterprise domain.</summary>
            public class AddexternallyhostedRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.ApksAddExternallyHostedResponse>
            {
                /// <summary>Constructs a new Addexternallyhosted request.</summary>
                public AddexternallyhostedRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.ApksAddExternallyHostedRequest body, string packageName, string editId)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.AndroidPublisher.v2.Data.ApksAddExternallyHostedRequest Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "addexternallyhosted"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "POST"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/apks/externallyHosted"; }
                }

                /// <summary>Initializes Addexternallyhosted parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }


            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            public virtual ListRequest List(string packageName, string editId)
            {
                return new ListRequest(service, packageName, editId);
            }


            public class ListRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.ApksListResponse>
            {
                /// <summary>Constructs a new List request.</summary>
                public ListRequest(Google.Apis.Services.IClientService service, string packageName, string editId)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "list"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/apks"; }
                }

                /// <summary>Initializes List parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }


            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            public virtual UploadRequest Upload(string packageName, string editId)
            {
                return new UploadRequest(service, packageName, editId);
            }


            public class UploadRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.Apk>
            {
                /// <summary>Constructs a new Upload request.</summary>
                public UploadRequest(Google.Apis.Services.IClientService service, string packageName, string editId)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "upload"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "POST"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/apks"; }
                }

                /// <summary>Initializes Upload parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }



            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param name="stream">The stream to upload.</param>
            /// <param name="contentType">The content type of the stream to upload.</param>
            public virtual UploadMediaUpload Upload(string packageName, string editId, System.IO.Stream stream, string contentType)
            {
                return new UploadMediaUpload(service, packageName, editId, stream, contentType);
            }

            /// <summary>Upload media upload which supports resumable upload.</summary>
            public class UploadMediaUpload : Google.Apis.Upload.ResumableUpload<string, Google.Apis.AndroidPublisher.v2.Data.Apk>
            {

                /// <summary>Data format for the response.</summary>
                /// [default: json]
                [Google.Apis.Util.RequestParameterAttribute("alt", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<AltEnum> Alt { get; set; }

                /// <summary>Data format for the response.</summary>
                public enum AltEnum
                {
                    /// <summary>Responses with Content-Type of application/json</summary>
                    [Google.Apis.Util.StringValueAttribute("json")]
                    Json,
                }

                /// <summary>Selector specifying which fields to include in a partial response.</summary>
                [Google.Apis.Util.RequestParameterAttribute("fields", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string Fields { get; set; }

                /// <summary>API key. Your API key identifies your project and provides you with API access, quota, and
                /// reports. Required unless you provide an OAuth 2.0 token.</summary>
                [Google.Apis.Util.RequestParameterAttribute("key", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string Key { get; set; }

                /// <summary>OAuth 2.0 token for the current user.</summary>
                [Google.Apis.Util.RequestParameterAttribute("oauth_token", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string OauthToken { get; set; }

                /// <summary>Returns response with indentations and line breaks.</summary>
                /// [default: true]
                [Google.Apis.Util.RequestParameterAttribute("prettyPrint", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<bool> PrettyPrint { get; set; }

                /// <summary>Available to use for quota purposes for server-side applications. Can be any arbitrary
                /// string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are
                /// provided.</summary>
                [Google.Apis.Util.RequestParameterAttribute("quotaUser", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string QuotaUser { get; set; }

                /// <summary>IP address of the site where the request originates. Use this if you want to enforce per-
                /// user limits.</summary>
                [Google.Apis.Util.RequestParameterAttribute("userIp", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string UserIp { get; set; }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>Constructs a new Upload media upload instance.</summary>
                public UploadMediaUpload(Google.Apis.Services.IClientService service, string
                 packageName, string
                 editId, System.IO.Stream stream, string contentType)
                    : base(service, string.Format("/{0}/{1}{2}", "upload", service.BasePath, "{packageName}/edits/{editId}/apks"), "POST", stream, contentType)
                {
                    PackageName = packageName;
                    EditId = editId;
                }
            }
        }
        private readonly DeobfuscationfilesResource deobfuscationfiles;

        /// <summary>Gets the Deobfuscationfiles resource.</summary>
        public virtual DeobfuscationfilesResource Deobfuscationfiles
        {
            get { return deobfuscationfiles; }
        }

        /// <summary>The "deobfuscationfiles" collection of methods.</summary>
        public class DeobfuscationfilesResource
        {
            private const string Resource = "deobfuscationfiles";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public DeobfuscationfilesResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;

            }


            /// <summary>Uploads the deobfuscation file of the specified APK. If a deobfuscation file already exists, it
            /// will be replaced.</summary>
            /// <param name="packageName">Unique identifier of the Android app for which the deobfuscatiuon files are being
            /// uploaded; for example, "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this
            /// edit.</param>
            /// <param name="apkVersionCode">The version code of the APK whose deobfuscation file is being
            /// uploaded.</param>
            /// <param name="deobfuscationFileType"></param>
            public virtual UploadRequest Upload(string packageName, string editId, int apkVersionCode, UploadRequest.DeobfuscationFileTypeEnum deobfuscationFileType)
            {
                return new UploadRequest(service, packageName, editId, apkVersionCode, deobfuscationFileType);
            }

            /// <summary>Uploads the deobfuscation file of the specified APK. If a deobfuscation file already exists, it
            /// will be replaced.</summary>
            public class UploadRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.DeobfuscationFilesUploadResponse>
            {
                /// <summary>Constructs a new Upload request.</summary>
                public UploadRequest(Google.Apis.Services.IClientService service, string packageName, string editId, int apkVersionCode, UploadRequest.DeobfuscationFileTypeEnum deobfuscationFileType)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    ApkVersionCode = apkVersionCode;
                    DeobfuscationFileType = deobfuscationFileType;
                    InitParameters();
                }


                /// <summary>Unique identifier of the Android app for which the deobfuscatiuon files are being uploaded;
                /// for example, "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The version code of the APK whose deobfuscation file is being uploaded.</summary>
                [Google.Apis.Util.RequestParameterAttribute("apkVersionCode", Google.Apis.Util.RequestParameterType.Path)]
                public virtual int ApkVersionCode { get; private set; }


                [Google.Apis.Util.RequestParameterAttribute("deobfuscationFileType", Google.Apis.Util.RequestParameterType.Path)]
                public virtual DeobfuscationFileTypeEnum DeobfuscationFileType { get; private set; }


                public enum DeobfuscationFileTypeEnum
                {
                    [Google.Apis.Util.StringValueAttribute("proguard")]
                    Proguard,
                }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "upload"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "POST"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/apks/{apkVersionCode}/deobfuscationFiles/{deobfuscationFileType}"; }
                }

                /// <summary>Initializes Upload parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "apkVersionCode", new Google.Apis.Discovery.Parameter
                        {
                            Name = "apkVersionCode",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "deobfuscationFileType", new Google.Apis.Discovery.Parameter
                        {
                            Name = "deobfuscationFileType",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Uploads the deobfuscation file of the specified APK. If a deobfuscation file already exists, it
            /// will be replaced.</summary>

            /// <param name="packageName">Unique identifier of the Android app for which the deobfuscatiuon files are being
            /// uploaded; for example, "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this
            /// edit.</param>
            /// <param name="apkVersionCode">The version code of the APK whose deobfuscation file is being
            /// uploaded.</param>
            /// <param name="deobfuscationFileType"></param>
            /// <param name="stream">The stream to upload.</param>
            /// <param name="contentType">The content type of the stream to upload.</param>
            public virtual UploadMediaUpload Upload(string packageName, string editId, int apkVersionCode, UploadMediaUpload.DeobfuscationFileTypeEnum deobfuscationFileType, System.IO.Stream stream, string contentType)
            {
                return new UploadMediaUpload(service, packageName, editId, apkVersionCode, deobfuscationFileType, stream, contentType);
            }

            /// <summary>Upload media upload which supports resumable upload.</summary>
            public class UploadMediaUpload : Google.Apis.Upload.ResumableUpload<string, Google.Apis.AndroidPublisher.v2.Data.DeobfuscationFilesUploadResponse>
            {

                /// <summary>Data format for the response.</summary>
                /// [default: json]
                [Google.Apis.Util.RequestParameterAttribute("alt", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<AltEnum> Alt { get; set; }

                /// <summary>Data format for the response.</summary>
                public enum AltEnum
                {
                    /// <summary>Responses with Content-Type of application/json</summary>
                    [Google.Apis.Util.StringValueAttribute("json")]
                    Json,
                }

                /// <summary>Selector specifying which fields to include in a partial response.</summary>
                [Google.Apis.Util.RequestParameterAttribute("fields", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string Fields { get; set; }

                /// <summary>API key. Your API key identifies your project and provides you with API access, quota, and
                /// reports. Required unless you provide an OAuth 2.0 token.</summary>
                [Google.Apis.Util.RequestParameterAttribute("key", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string Key { get; set; }

                /// <summary>OAuth 2.0 token for the current user.</summary>
                [Google.Apis.Util.RequestParameterAttribute("oauth_token", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string OauthToken { get; set; }

                /// <summary>Returns response with indentations and line breaks.</summary>
                /// [default: true]
                [Google.Apis.Util.RequestParameterAttribute("prettyPrint", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<bool> PrettyPrint { get; set; }

                /// <summary>Available to use for quota purposes for server-side applications. Can be any arbitrary
                /// string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are
                /// provided.</summary>
                [Google.Apis.Util.RequestParameterAttribute("quotaUser", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string QuotaUser { get; set; }

                /// <summary>IP address of the site where the request originates. Use this if you want to enforce per-
                /// user limits.</summary>
                [Google.Apis.Util.RequestParameterAttribute("userIp", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string UserIp { get; set; }


                /// <summary>Unique identifier of the Android app for which the deobfuscatiuon files are being uploaded;
                /// for example, "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The version code of the APK whose deobfuscation file is being uploaded.</summary>
                [Google.Apis.Util.RequestParameterAttribute("apkVersionCode", Google.Apis.Util.RequestParameterType.Path)]
                public virtual int ApkVersionCode { get; private set; }


                [Google.Apis.Util.RequestParameterAttribute("deobfuscationFileType", Google.Apis.Util.RequestParameterType.Path)]
                public virtual DeobfuscationFileTypeEnum DeobfuscationFileType { get; private set; }


                public enum DeobfuscationFileTypeEnum
                {
                    [Google.Apis.Util.StringValueAttribute("proguard")]
                    Proguard,
                }

                /// <summary>Constructs a new Upload media upload instance.</summary>
                public UploadMediaUpload(Google.Apis.Services.IClientService service, string
                 packageName, string
                 editId, int
                 apkVersionCode, UploadMediaUpload.DeobfuscationFileTypeEnum
                 deobfuscationFileType, System.IO.Stream stream, string contentType)
                    : base(service, string.Format("/{0}/{1}{2}", "upload", service.BasePath, "{packageName}/edits/{editId}/apks/{apkVersionCode}/deobfuscationFiles/{deobfuscationFileType}"), "POST", stream, contentType)
                {
                    PackageName = packageName;
                    EditId = editId;
                    ApkVersionCode = apkVersionCode;
                    DeobfuscationFileType = deobfuscationFileType;
                }
            }
        }
        private readonly DetailsResource details;

        /// <summary>Gets the Details resource.</summary>
        public virtual DetailsResource Details
        {
            get { return details; }
        }

        /// <summary>The "details" collection of methods.</summary>
        public class DetailsResource
        {
            private const string Resource = "details";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public DetailsResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;

            }


            /// <summary>Fetches app details for this edit. This includes the default language and developer support
            /// contact information.</summary>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            public virtual GetRequest Get(string packageName, string editId)
            {
                return new GetRequest(service, packageName, editId);
            }

            /// <summary>Fetches app details for this edit. This includes the default language and developer support
            /// contact information.</summary>
            public class GetRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.AppDetails>
            {
                /// <summary>Constructs a new Get request.</summary>
                public GetRequest(Google.Apis.Services.IClientService service, string packageName, string editId)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "get"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/details"; }
                }

                /// <summary>Initializes Get parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Updates app details for this edit. This method supports patch semantics.</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            public virtual PatchRequest Patch(Google.Apis.AndroidPublisher.v2.Data.AppDetails body, string packageName, string editId)
            {
                return new PatchRequest(service, body, packageName, editId);
            }

            /// <summary>Updates app details for this edit. This method supports patch semantics.</summary>
            public class PatchRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.AppDetails>
            {
                /// <summary>Constructs a new Patch request.</summary>
                public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.AppDetails body, string packageName, string editId)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.AndroidPublisher.v2.Data.AppDetails Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "patch"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "PATCH"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/details"; }
                }

                /// <summary>Initializes Patch parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Updates app details for this edit.</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            public virtual UpdateRequest Update(Google.Apis.AndroidPublisher.v2.Data.AppDetails body, string packageName, string editId)
            {
                return new UpdateRequest(service, body, packageName, editId);
            }

            /// <summary>Updates app details for this edit.</summary>
            public class UpdateRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.AppDetails>
            {
                /// <summary>Constructs a new Update request.</summary>
                public UpdateRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.AppDetails body, string packageName, string editId)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.AndroidPublisher.v2.Data.AppDetails Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "update"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "PUT"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/details"; }
                }

                /// <summary>Initializes Update parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }
        }
        private readonly ExpansionfilesResource expansionfiles;

        /// <summary>Gets the Expansionfiles resource.</summary>
        public virtual ExpansionfilesResource Expansionfiles
        {
            get { return expansionfiles; }
        }

        /// <summary>The "expansionfiles" collection of methods.</summary>
        public class ExpansionfilesResource
        {
            private const string Resource = "expansionfiles";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public ExpansionfilesResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;

            }


            /// <summary>Fetches the Expansion File configuration for the APK specified.</summary>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="apkVersionCode">The version code of the APK whose Expansion File configuration is being read or
            /// modified.</param>
            /// <param name="expansionFileType"></param>
            public virtual GetRequest Get(string packageName, string editId, int apkVersionCode, GetRequest.ExpansionFileTypeEnum expansionFileType)
            {
                return new GetRequest(service, packageName, editId, apkVersionCode, expansionFileType);
            }

            /// <summary>Fetches the Expansion File configuration for the APK specified.</summary>
            public class GetRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.ExpansionFile>
            {
                /// <summary>Constructs a new Get request.</summary>
                public GetRequest(Google.Apis.Services.IClientService service, string packageName, string editId, int apkVersionCode, GetRequest.ExpansionFileTypeEnum expansionFileType)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    ApkVersionCode = apkVersionCode;
                    ExpansionFileType = expansionFileType;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The version code of the APK whose Expansion File configuration is being read or
                /// modified.</summary>
                [Google.Apis.Util.RequestParameterAttribute("apkVersionCode", Google.Apis.Util.RequestParameterType.Path)]
                public virtual int ApkVersionCode { get; private set; }


                [Google.Apis.Util.RequestParameterAttribute("expansionFileType", Google.Apis.Util.RequestParameterType.Path)]
                public virtual ExpansionFileTypeEnum ExpansionFileType { get; private set; }


                public enum ExpansionFileTypeEnum
                {
                    [Google.Apis.Util.StringValueAttribute("main")]
                    Main,
                    [Google.Apis.Util.StringValueAttribute("patch")]
                    Patch,
                }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "get"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}"; }
                }

                /// <summary>Initializes Get parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "apkVersionCode", new Google.Apis.Discovery.Parameter
                        {
                            Name = "apkVersionCode",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "expansionFileType", new Google.Apis.Discovery.Parameter
                        {
                            Name = "expansionFileType",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Updates the APK's Expansion File configuration to reference another APK's Expansion Files. To
            /// add a new Expansion File use the Upload method. This method supports patch semantics.</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="apkVersionCode">The version code of the APK whose Expansion File configuration is being read or
            /// modified.</param>
            /// <param name="expansionFileType"></param>
            public virtual PatchRequest Patch(Google.Apis.AndroidPublisher.v2.Data.ExpansionFile body, string packageName, string editId, int apkVersionCode, PatchRequest.ExpansionFileTypeEnum expansionFileType)
            {
                return new PatchRequest(service, body, packageName, editId, apkVersionCode, expansionFileType);
            }

            /// <summary>Updates the APK's Expansion File configuration to reference another APK's Expansion Files. To
            /// add a new Expansion File use the Upload method. This method supports patch semantics.</summary>
            public class PatchRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.ExpansionFile>
            {
                /// <summary>Constructs a new Patch request.</summary>
                public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.ExpansionFile body, string packageName, string editId, int apkVersionCode, PatchRequest.ExpansionFileTypeEnum expansionFileType)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    ApkVersionCode = apkVersionCode;
                    ExpansionFileType = expansionFileType;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The version code of the APK whose Expansion File configuration is being read or
                /// modified.</summary>
                [Google.Apis.Util.RequestParameterAttribute("apkVersionCode", Google.Apis.Util.RequestParameterType.Path)]
                public virtual int ApkVersionCode { get; private set; }


                [Google.Apis.Util.RequestParameterAttribute("expansionFileType", Google.Apis.Util.RequestParameterType.Path)]
                public virtual ExpansionFileTypeEnum ExpansionFileType { get; private set; }


                public enum ExpansionFileTypeEnum
                {
                    [Google.Apis.Util.StringValueAttribute("main")]
                    Main,
                    [Google.Apis.Util.StringValueAttribute("patch")]
                    Patch,
                }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.AndroidPublisher.v2.Data.ExpansionFile Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "patch"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "PATCH"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}"; }
                }

                /// <summary>Initializes Patch parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "apkVersionCode", new Google.Apis.Discovery.Parameter
                        {
                            Name = "apkVersionCode",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "expansionFileType", new Google.Apis.Discovery.Parameter
                        {
                            Name = "expansionFileType",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Updates the APK's Expansion File configuration to reference another APK's Expansion Files. To
            /// add a new Expansion File use the Upload method.</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="apkVersionCode">The version code of the APK whose Expansion File configuration is being read or
            /// modified.</param>
            /// <param name="expansionFileType"></param>
            public virtual UpdateRequest Update(Google.Apis.AndroidPublisher.v2.Data.ExpansionFile body, string packageName, string editId, int apkVersionCode, UpdateRequest.ExpansionFileTypeEnum expansionFileType)
            {
                return new UpdateRequest(service, body, packageName, editId, apkVersionCode, expansionFileType);
            }

            /// <summary>Updates the APK's Expansion File configuration to reference another APK's Expansion Files. To
            /// add a new Expansion File use the Upload method.</summary>
            public class UpdateRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.ExpansionFile>
            {
                /// <summary>Constructs a new Update request.</summary>
                public UpdateRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.ExpansionFile body, string packageName, string editId, int apkVersionCode, UpdateRequest.ExpansionFileTypeEnum expansionFileType)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    ApkVersionCode = apkVersionCode;
                    ExpansionFileType = expansionFileType;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The version code of the APK whose Expansion File configuration is being read or
                /// modified.</summary>
                [Google.Apis.Util.RequestParameterAttribute("apkVersionCode", Google.Apis.Util.RequestParameterType.Path)]
                public virtual int ApkVersionCode { get; private set; }


                [Google.Apis.Util.RequestParameterAttribute("expansionFileType", Google.Apis.Util.RequestParameterType.Path)]
                public virtual ExpansionFileTypeEnum ExpansionFileType { get; private set; }


                public enum ExpansionFileTypeEnum
                {
                    [Google.Apis.Util.StringValueAttribute("main")]
                    Main,
                    [Google.Apis.Util.StringValueAttribute("patch")]
                    Patch,
                }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.AndroidPublisher.v2.Data.ExpansionFile Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "update"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "PUT"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}"; }
                }

                /// <summary>Initializes Update parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "apkVersionCode", new Google.Apis.Discovery.Parameter
                        {
                            Name = "apkVersionCode",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "expansionFileType", new Google.Apis.Discovery.Parameter
                        {
                            Name = "expansionFileType",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Uploads and attaches a new Expansion File to the APK specified.</summary>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="apkVersionCode">The version code of the APK whose Expansion File configuration is being read or
            /// modified.</param>
            /// <param name="expansionFileType"></param>
            public virtual UploadRequest Upload(string packageName, string editId, int apkVersionCode, UploadRequest.ExpansionFileTypeEnum expansionFileType)
            {
                return new UploadRequest(service, packageName, editId, apkVersionCode, expansionFileType);
            }

            /// <summary>Uploads and attaches a new Expansion File to the APK specified.</summary>
            public class UploadRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.ExpansionFilesUploadResponse>
            {
                /// <summary>Constructs a new Upload request.</summary>
                public UploadRequest(Google.Apis.Services.IClientService service, string packageName, string editId, int apkVersionCode, UploadRequest.ExpansionFileTypeEnum expansionFileType)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    ApkVersionCode = apkVersionCode;
                    ExpansionFileType = expansionFileType;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The version code of the APK whose Expansion File configuration is being read or
                /// modified.</summary>
                [Google.Apis.Util.RequestParameterAttribute("apkVersionCode", Google.Apis.Util.RequestParameterType.Path)]
                public virtual int ApkVersionCode { get; private set; }


                [Google.Apis.Util.RequestParameterAttribute("expansionFileType", Google.Apis.Util.RequestParameterType.Path)]
                public virtual ExpansionFileTypeEnum ExpansionFileType { get; private set; }


                public enum ExpansionFileTypeEnum
                {
                    [Google.Apis.Util.StringValueAttribute("main")]
                    Main,
                    [Google.Apis.Util.StringValueAttribute("patch")]
                    Patch,
                }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "upload"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "POST"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}"; }
                }

                /// <summary>Initializes Upload parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "apkVersionCode", new Google.Apis.Discovery.Parameter
                        {
                            Name = "apkVersionCode",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "expansionFileType", new Google.Apis.Discovery.Parameter
                        {
                            Name = "expansionFileType",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Uploads and attaches a new Expansion File to the APK specified.</summary>

            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="apkVersionCode">The version code of the APK whose Expansion File configuration is being read or
            /// modified.</param>
            /// <param name="expansionFileType"></param>
            /// <param name="stream">The stream to upload.</param>
            /// <param name="contentType">The content type of the stream to upload.</param>
            public virtual UploadMediaUpload Upload(string packageName, string editId, int apkVersionCode, UploadMediaUpload.ExpansionFileTypeEnum expansionFileType, System.IO.Stream stream, string contentType)
            {
                return new UploadMediaUpload(service, packageName, editId, apkVersionCode, expansionFileType, stream, contentType);
            }

            /// <summary>Upload media upload which supports resumable upload.</summary>
            public class UploadMediaUpload : Google.Apis.Upload.ResumableUpload<string, Google.Apis.AndroidPublisher.v2.Data.ExpansionFilesUploadResponse>
            {

                /// <summary>Data format for the response.</summary>
                /// [default: json]
                [Google.Apis.Util.RequestParameterAttribute("alt", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<AltEnum> Alt { get; set; }

                /// <summary>Data format for the response.</summary>
                public enum AltEnum
                {
                    /// <summary>Responses with Content-Type of application/json</summary>
                    [Google.Apis.Util.StringValueAttribute("json")]
                    Json,
                }

                /// <summary>Selector specifying which fields to include in a partial response.</summary>
                [Google.Apis.Util.RequestParameterAttribute("fields", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string Fields { get; set; }

                /// <summary>API key. Your API key identifies your project and provides you with API access, quota, and
                /// reports. Required unless you provide an OAuth 2.0 token.</summary>
                [Google.Apis.Util.RequestParameterAttribute("key", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string Key { get; set; }

                /// <summary>OAuth 2.0 token for the current user.</summary>
                [Google.Apis.Util.RequestParameterAttribute("oauth_token", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string OauthToken { get; set; }

                /// <summary>Returns response with indentations and line breaks.</summary>
                /// [default: true]
                [Google.Apis.Util.RequestParameterAttribute("prettyPrint", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<bool> PrettyPrint { get; set; }

                /// <summary>Available to use for quota purposes for server-side applications. Can be any arbitrary
                /// string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are
                /// provided.</summary>
                [Google.Apis.Util.RequestParameterAttribute("quotaUser", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string QuotaUser { get; set; }

                /// <summary>IP address of the site where the request originates. Use this if you want to enforce per-
                /// user limits.</summary>
                [Google.Apis.Util.RequestParameterAttribute("userIp", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string UserIp { get; set; }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The version code of the APK whose Expansion File configuration is being read or
                /// modified.</summary>
                [Google.Apis.Util.RequestParameterAttribute("apkVersionCode", Google.Apis.Util.RequestParameterType.Path)]
                public virtual int ApkVersionCode { get; private set; }


                [Google.Apis.Util.RequestParameterAttribute("expansionFileType", Google.Apis.Util.RequestParameterType.Path)]
                public virtual ExpansionFileTypeEnum ExpansionFileType { get; private set; }


                public enum ExpansionFileTypeEnum
                {
                    [Google.Apis.Util.StringValueAttribute("main")]
                    Main,
                    [Google.Apis.Util.StringValueAttribute("patch")]
                    Patch,
                }

                /// <summary>Constructs a new Upload media upload instance.</summary>
                public UploadMediaUpload(Google.Apis.Services.IClientService service, string
                 packageName, string
                 editId, int
                 apkVersionCode, UploadMediaUpload.ExpansionFileTypeEnum
                 expansionFileType, System.IO.Stream stream, string contentType)
                    : base(service, string.Format("/{0}/{1}{2}", "upload", service.BasePath, "{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}"), "POST", stream, contentType)
                {
                    PackageName = packageName;
                    EditId = editId;
                    ApkVersionCode = apkVersionCode;
                    ExpansionFileType = expansionFileType;
                }
            }
        }
        private readonly ImagesResource images;

        /// <summary>Gets the Images resource.</summary>
        public virtual ImagesResource Images
        {
            get { return images; }
        }

        /// <summary>The "images" collection of methods.</summary>
        public class ImagesResource
        {
            private const string Resource = "images";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public ImagesResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;

            }


            /// <summary>Deletes the image (specified by id) from the edit.</summary>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="language">The language code (a BCP-47 language tag) of the localized listing whose images are to read or
            /// modified. For example, to select Austrian German, pass "de-AT".</param>
            /// <param
            /// name="imageType"></param>
            /// <param name="imageId">Unique identifier an image within the set of images attached
            /// to this edit.</param>
            public virtual DeleteRequest Delete(string packageName, string editId, string language, DeleteRequest.ImageTypeEnum imageType, string imageId)
            {
                return new DeleteRequest(service, packageName, editId, language, imageType, imageId);
            }

            /// <summary>Deletes the image (specified by id) from the edit.</summary>
            public class DeleteRequest : AndroidPublisherBaseServiceRequest<string>
            {
                /// <summary>Constructs a new Delete request.</summary>
                public DeleteRequest(Google.Apis.Services.IClientService service, string packageName, string editId, string language, DeleteRequest.ImageTypeEnum imageType, string imageId)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Language = language;
                    ImageType = imageType;
                    ImageId = imageId;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The language code (a BCP-47 language tag) of the localized listing whose images are to read
                /// or modified. For example, to select Austrian German, pass "de-AT".</summary>
                [Google.Apis.Util.RequestParameterAttribute("language", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Language { get; private set; }


                [Google.Apis.Util.RequestParameterAttribute("imageType", Google.Apis.Util.RequestParameterType.Path)]
                public virtual ImageTypeEnum ImageType { get; private set; }


                public enum ImageTypeEnum
                {
                    [Google.Apis.Util.StringValueAttribute("featureGraphic")]
                    FeatureGraphic,
                    [Google.Apis.Util.StringValueAttribute("icon")]
                    Icon,
                    [Google.Apis.Util.StringValueAttribute("phoneScreenshots")]
                    PhoneScreenshots,
                    [Google.Apis.Util.StringValueAttribute("promoGraphic")]
                    PromoGraphic,
                    [Google.Apis.Util.StringValueAttribute("sevenInchScreenshots")]
                    SevenInchScreenshots,
                    [Google.Apis.Util.StringValueAttribute("tenInchScreenshots")]
                    TenInchScreenshots,
                    [Google.Apis.Util.StringValueAttribute("tvBanner")]
                    TvBanner,
                    [Google.Apis.Util.StringValueAttribute("tvScreenshots")]
                    TvScreenshots,
                    [Google.Apis.Util.StringValueAttribute("wearScreenshots")]
                    WearScreenshots,
                }

                /// <summary>Unique identifier an image within the set of images attached to this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("imageId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string ImageId { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "delete"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "DELETE"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/listings/{language}/{imageType}/{imageId}"; }
                }

                /// <summary>Initializes Delete parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "language", new Google.Apis.Discovery.Parameter
                        {
                            Name = "language",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "imageType", new Google.Apis.Discovery.Parameter
                        {
                            Name = "imageType",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "imageId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "imageId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Deletes all images for the specified language and image type.</summary>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="language">The language code (a BCP-47 language tag) of the localized listing whose images are to read or
            /// modified. For example, to select Austrian German, pass "de-AT".</param>
            /// <param
            /// name="imageType"></param>
            public virtual DeleteallRequest Deleteall(string packageName, string editId, string language, DeleteallRequest.ImageTypeEnum imageType)
            {
                return new DeleteallRequest(service, packageName, editId, language, imageType);
            }

            /// <summary>Deletes all images for the specified language and image type.</summary>
            public class DeleteallRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.ImagesDeleteAllResponse>
            {
                /// <summary>Constructs a new Deleteall request.</summary>
                public DeleteallRequest(Google.Apis.Services.IClientService service, string packageName, string editId, string language, DeleteallRequest.ImageTypeEnum imageType)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Language = language;
                    ImageType = imageType;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The language code (a BCP-47 language tag) of the localized listing whose images are to read
                /// or modified. For example, to select Austrian German, pass "de-AT".</summary>
                [Google.Apis.Util.RequestParameterAttribute("language", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Language { get; private set; }


                [Google.Apis.Util.RequestParameterAttribute("imageType", Google.Apis.Util.RequestParameterType.Path)]
                public virtual ImageTypeEnum ImageType { get; private set; }


                public enum ImageTypeEnum
                {
                    [Google.Apis.Util.StringValueAttribute("featureGraphic")]
                    FeatureGraphic,
                    [Google.Apis.Util.StringValueAttribute("icon")]
                    Icon,
                    [Google.Apis.Util.StringValueAttribute("phoneScreenshots")]
                    PhoneScreenshots,
                    [Google.Apis.Util.StringValueAttribute("promoGraphic")]
                    PromoGraphic,
                    [Google.Apis.Util.StringValueAttribute("sevenInchScreenshots")]
                    SevenInchScreenshots,
                    [Google.Apis.Util.StringValueAttribute("tenInchScreenshots")]
                    TenInchScreenshots,
                    [Google.Apis.Util.StringValueAttribute("tvBanner")]
                    TvBanner,
                    [Google.Apis.Util.StringValueAttribute("tvScreenshots")]
                    TvScreenshots,
                    [Google.Apis.Util.StringValueAttribute("wearScreenshots")]
                    WearScreenshots,
                }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "deleteall"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "DELETE"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/listings/{language}/{imageType}"; }
                }

                /// <summary>Initializes Deleteall parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "language", new Google.Apis.Discovery.Parameter
                        {
                            Name = "language",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "imageType", new Google.Apis.Discovery.Parameter
                        {
                            Name = "imageType",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Lists all images for the specified language and image type.</summary>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="language">The language code (a BCP-47 language tag) of the localized listing whose images are to read or
            /// modified. For example, to select Austrian German, pass "de-AT".</param>
            /// <param
            /// name="imageType"></param>
            public virtual ListRequest List(string packageName, string editId, string language, ListRequest.ImageTypeEnum imageType)
            {
                return new ListRequest(service, packageName, editId, language, imageType);
            }

            /// <summary>Lists all images for the specified language and image type.</summary>
            public class ListRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.ImagesListResponse>
            {
                /// <summary>Constructs a new List request.</summary>
                public ListRequest(Google.Apis.Services.IClientService service, string packageName, string editId, string language, ListRequest.ImageTypeEnum imageType)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Language = language;
                    ImageType = imageType;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The language code (a BCP-47 language tag) of the localized listing whose images are to read
                /// or modified. For example, to select Austrian German, pass "de-AT".</summary>
                [Google.Apis.Util.RequestParameterAttribute("language", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Language { get; private set; }


                [Google.Apis.Util.RequestParameterAttribute("imageType", Google.Apis.Util.RequestParameterType.Path)]
                public virtual ImageTypeEnum ImageType { get; private set; }


                public enum ImageTypeEnum
                {
                    [Google.Apis.Util.StringValueAttribute("featureGraphic")]
                    FeatureGraphic,
                    [Google.Apis.Util.StringValueAttribute("icon")]
                    Icon,
                    [Google.Apis.Util.StringValueAttribute("phoneScreenshots")]
                    PhoneScreenshots,
                    [Google.Apis.Util.StringValueAttribute("promoGraphic")]
                    PromoGraphic,
                    [Google.Apis.Util.StringValueAttribute("sevenInchScreenshots")]
                    SevenInchScreenshots,
                    [Google.Apis.Util.StringValueAttribute("tenInchScreenshots")]
                    TenInchScreenshots,
                    [Google.Apis.Util.StringValueAttribute("tvBanner")]
                    TvBanner,
                    [Google.Apis.Util.StringValueAttribute("tvScreenshots")]
                    TvScreenshots,
                    [Google.Apis.Util.StringValueAttribute("wearScreenshots")]
                    WearScreenshots,
                }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "list"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/listings/{language}/{imageType}"; }
                }

                /// <summary>Initializes List parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "language", new Google.Apis.Discovery.Parameter
                        {
                            Name = "language",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "imageType", new Google.Apis.Discovery.Parameter
                        {
                            Name = "imageType",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Uploads a new image and adds it to the list of images for the specified language and image
            /// type.</summary>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="language">The language code (a BCP-47 language tag) of the localized listing whose images are to read or
            /// modified. For example, to select Austrian German, pass "de-AT".</param>
            /// <param
            /// name="imageType"></param>
            public virtual UploadRequest Upload(string packageName, string editId, string language, UploadRequest.ImageTypeEnum imageType)
            {
                return new UploadRequest(service, packageName, editId, language, imageType);
            }

            /// <summary>Uploads a new image and adds it to the list of images for the specified language and image
            /// type.</summary>
            public class UploadRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.ImagesUploadResponse>
            {
                /// <summary>Constructs a new Upload request.</summary>
                public UploadRequest(Google.Apis.Services.IClientService service, string packageName, string editId, string language, UploadRequest.ImageTypeEnum imageType)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Language = language;
                    ImageType = imageType;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The language code (a BCP-47 language tag) of the localized listing whose images are to read
                /// or modified. For example, to select Austrian German, pass "de-AT".</summary>
                [Google.Apis.Util.RequestParameterAttribute("language", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Language { get; private set; }


                [Google.Apis.Util.RequestParameterAttribute("imageType", Google.Apis.Util.RequestParameterType.Path)]
                public virtual ImageTypeEnum ImageType { get; private set; }


                public enum ImageTypeEnum
                {
                    [Google.Apis.Util.StringValueAttribute("featureGraphic")]
                    FeatureGraphic,
                    [Google.Apis.Util.StringValueAttribute("icon")]
                    Icon,
                    [Google.Apis.Util.StringValueAttribute("phoneScreenshots")]
                    PhoneScreenshots,
                    [Google.Apis.Util.StringValueAttribute("promoGraphic")]
                    PromoGraphic,
                    [Google.Apis.Util.StringValueAttribute("sevenInchScreenshots")]
                    SevenInchScreenshots,
                    [Google.Apis.Util.StringValueAttribute("tenInchScreenshots")]
                    TenInchScreenshots,
                    [Google.Apis.Util.StringValueAttribute("tvBanner")]
                    TvBanner,
                    [Google.Apis.Util.StringValueAttribute("tvScreenshots")]
                    TvScreenshots,
                    [Google.Apis.Util.StringValueAttribute("wearScreenshots")]
                    WearScreenshots,
                }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "upload"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "POST"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/listings/{language}/{imageType}"; }
                }

                /// <summary>Initializes Upload parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "language", new Google.Apis.Discovery.Parameter
                        {
                            Name = "language",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "imageType", new Google.Apis.Discovery.Parameter
                        {
                            Name = "imageType",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Uploads a new image and adds it to the list of images for the specified language and image
            /// type.</summary>

            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="language">The language code (a BCP-47 language tag) of the localized listing whose images are to read or
            /// modified. For example, to select Austrian German, pass "de-AT".</param>
            /// <param
            /// name="imageType"></param>
            /// <param name="stream">The stream to upload.</param>
            /// <param name="contentType">The content type of the stream to upload.</param>
            public virtual UploadMediaUpload Upload(string packageName, string editId, string language, UploadMediaUpload.ImageTypeEnum imageType, System.IO.Stream stream, string contentType)
            {
                return new UploadMediaUpload(service, packageName, editId, language, imageType, stream, contentType);
            }

            /// <summary>Upload media upload which supports resumable upload.</summary>
            public class UploadMediaUpload : Google.Apis.Upload.ResumableUpload<string, Google.Apis.AndroidPublisher.v2.Data.ImagesUploadResponse>
            {

                /// <summary>Data format for the response.</summary>
                /// [default: json]
                [Google.Apis.Util.RequestParameterAttribute("alt", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<AltEnum> Alt { get; set; }

                /// <summary>Data format for the response.</summary>
                public enum AltEnum
                {
                    /// <summary>Responses with Content-Type of application/json</summary>
                    [Google.Apis.Util.StringValueAttribute("json")]
                    Json,
                }

                /// <summary>Selector specifying which fields to include in a partial response.</summary>
                [Google.Apis.Util.RequestParameterAttribute("fields", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string Fields { get; set; }

                /// <summary>API key. Your API key identifies your project and provides you with API access, quota, and
                /// reports. Required unless you provide an OAuth 2.0 token.</summary>
                [Google.Apis.Util.RequestParameterAttribute("key", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string Key { get; set; }

                /// <summary>OAuth 2.0 token for the current user.</summary>
                [Google.Apis.Util.RequestParameterAttribute("oauth_token", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string OauthToken { get; set; }

                /// <summary>Returns response with indentations and line breaks.</summary>
                /// [default: true]
                [Google.Apis.Util.RequestParameterAttribute("prettyPrint", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<bool> PrettyPrint { get; set; }

                /// <summary>Available to use for quota purposes for server-side applications. Can be any arbitrary
                /// string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are
                /// provided.</summary>
                [Google.Apis.Util.RequestParameterAttribute("quotaUser", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string QuotaUser { get; set; }

                /// <summary>IP address of the site where the request originates. Use this if you want to enforce per-
                /// user limits.</summary>
                [Google.Apis.Util.RequestParameterAttribute("userIp", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string UserIp { get; set; }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The language code (a BCP-47 language tag) of the localized listing whose images are to read
                /// or modified. For example, to select Austrian German, pass "de-AT".</summary>
                [Google.Apis.Util.RequestParameterAttribute("language", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Language { get; private set; }


                [Google.Apis.Util.RequestParameterAttribute("imageType", Google.Apis.Util.RequestParameterType.Path)]
                public virtual ImageTypeEnum ImageType { get; private set; }


                public enum ImageTypeEnum
                {
                    [Google.Apis.Util.StringValueAttribute("featureGraphic")]
                    FeatureGraphic,
                    [Google.Apis.Util.StringValueAttribute("icon")]
                    Icon,
                    [Google.Apis.Util.StringValueAttribute("phoneScreenshots")]
                    PhoneScreenshots,
                    [Google.Apis.Util.StringValueAttribute("promoGraphic")]
                    PromoGraphic,
                    [Google.Apis.Util.StringValueAttribute("sevenInchScreenshots")]
                    SevenInchScreenshots,
                    [Google.Apis.Util.StringValueAttribute("tenInchScreenshots")]
                    TenInchScreenshots,
                    [Google.Apis.Util.StringValueAttribute("tvBanner")]
                    TvBanner,
                    [Google.Apis.Util.StringValueAttribute("tvScreenshots")]
                    TvScreenshots,
                    [Google.Apis.Util.StringValueAttribute("wearScreenshots")]
                    WearScreenshots,
                }

                /// <summary>Constructs a new Upload media upload instance.</summary>
                public UploadMediaUpload(Google.Apis.Services.IClientService service, string
                 packageName, string
                 editId, string
                 language, UploadMediaUpload.ImageTypeEnum
                 imageType, System.IO.Stream stream, string contentType)
                    : base(service, string.Format("/{0}/{1}{2}", "upload", service.BasePath, "{packageName}/edits/{editId}/listings/{language}/{imageType}"), "POST", stream, contentType)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Language = language;
                    ImageType = imageType;
                }
            }
        }
        private readonly ListingsResource listings;

        /// <summary>Gets the Listings resource.</summary>
        public virtual ListingsResource Listings
        {
            get { return listings; }
        }

        /// <summary>The "listings" collection of methods.</summary>
        public class ListingsResource
        {
            private const string Resource = "listings";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public ListingsResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;

            }


            /// <summary>Deletes the specified localized store listing from an edit.</summary>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="language">The language code (a BCP-47 language tag) of the localized listing to read or modify. For example,
            /// to select Austrian German, pass "de-AT".</param>
            public virtual DeleteRequest Delete(string packageName, string editId, string language)
            {
                return new DeleteRequest(service, packageName, editId, language);
            }

            /// <summary>Deletes the specified localized store listing from an edit.</summary>
            public class DeleteRequest : AndroidPublisherBaseServiceRequest<string>
            {
                /// <summary>Constructs a new Delete request.</summary>
                public DeleteRequest(Google.Apis.Services.IClientService service, string packageName, string editId, string language)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Language = language;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The language code (a BCP-47 language tag) of the localized listing to read or modify. For
                /// example, to select Austrian German, pass "de-AT".</summary>
                [Google.Apis.Util.RequestParameterAttribute("language", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Language { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "delete"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "DELETE"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/listings/{language}"; }
                }

                /// <summary>Initializes Delete parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "language", new Google.Apis.Discovery.Parameter
                        {
                            Name = "language",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Deletes all localized listings from an edit.</summary>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            public virtual DeleteallRequest Deleteall(string packageName, string editId)
            {
                return new DeleteallRequest(service, packageName, editId);
            }

            /// <summary>Deletes all localized listings from an edit.</summary>
            public class DeleteallRequest : AndroidPublisherBaseServiceRequest<string>
            {
                /// <summary>Constructs a new Deleteall request.</summary>
                public DeleteallRequest(Google.Apis.Services.IClientService service, string packageName, string editId)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "deleteall"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "DELETE"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/listings"; }
                }

                /// <summary>Initializes Deleteall parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Fetches information about a localized store listing.</summary>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="language">The language code (a BCP-47 language tag) of the localized listing to read or modify. For example,
            /// to select Austrian German, pass "de-AT".</param>
            public virtual GetRequest Get(string packageName, string editId, string language)
            {
                return new GetRequest(service, packageName, editId, language);
            }

            /// <summary>Fetches information about a localized store listing.</summary>
            public class GetRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.Listing>
            {
                /// <summary>Constructs a new Get request.</summary>
                public GetRequest(Google.Apis.Services.IClientService service, string packageName, string editId, string language)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Language = language;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The language code (a BCP-47 language tag) of the localized listing to read or modify. For
                /// example, to select Austrian German, pass "de-AT".</summary>
                [Google.Apis.Util.RequestParameterAttribute("language", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Language { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "get"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/listings/{language}"; }
                }

                /// <summary>Initializes Get parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "language", new Google.Apis.Discovery.Parameter
                        {
                            Name = "language",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Returns all of the localized store listings attached to this edit.</summary>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            public virtual ListRequest List(string packageName, string editId)
            {
                return new ListRequest(service, packageName, editId);
            }

            /// <summary>Returns all of the localized store listings attached to this edit.</summary>
            public class ListRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.ListingsListResponse>
            {
                /// <summary>Constructs a new List request.</summary>
                public ListRequest(Google.Apis.Services.IClientService service, string packageName, string editId)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "list"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/listings"; }
                }

                /// <summary>Initializes List parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Creates or updates a localized store listing. This method supports patch semantics.</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="language">The language code (a BCP-47 language tag) of the localized listing to read or modify. For example,
            /// to select Austrian German, pass "de-AT".</param>
            public virtual PatchRequest Patch(Google.Apis.AndroidPublisher.v2.Data.Listing body, string packageName, string editId, string language)
            {
                return new PatchRequest(service, body, packageName, editId, language);
            }

            /// <summary>Creates or updates a localized store listing. This method supports patch semantics.</summary>
            public class PatchRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.Listing>
            {
                /// <summary>Constructs a new Patch request.</summary>
                public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.Listing body, string packageName, string editId, string language)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Language = language;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The language code (a BCP-47 language tag) of the localized listing to read or modify. For
                /// example, to select Austrian German, pass "de-AT".</summary>
                [Google.Apis.Util.RequestParameterAttribute("language", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Language { get; private set; }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.AndroidPublisher.v2.Data.Listing Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "patch"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "PATCH"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/listings/{language}"; }
                }

                /// <summary>Initializes Patch parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "language", new Google.Apis.Discovery.Parameter
                        {
                            Name = "language",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Creates or updates a localized store listing.</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="language">The language code (a BCP-47 language tag) of the localized listing to read or modify. For example,
            /// to select Austrian German, pass "de-AT".</param>
            public virtual UpdateRequest Update(Google.Apis.AndroidPublisher.v2.Data.Listing body, string packageName, string editId, string language)
            {
                return new UpdateRequest(service, body, packageName, editId, language);
            }

            /// <summary>Creates or updates a localized store listing.</summary>
            public class UpdateRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.Listing>
            {
                /// <summary>Constructs a new Update request.</summary>
                public UpdateRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.Listing body, string packageName, string editId, string language)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Language = language;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The language code (a BCP-47 language tag) of the localized listing to read or modify. For
                /// example, to select Austrian German, pass "de-AT".</summary>
                [Google.Apis.Util.RequestParameterAttribute("language", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Language { get; private set; }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.AndroidPublisher.v2.Data.Listing Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "update"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "PUT"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/listings/{language}"; }
                }

                /// <summary>Initializes Update parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "language", new Google.Apis.Discovery.Parameter
                        {
                            Name = "language",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }
        }
        private readonly TestersResource testers;

        /// <summary>Gets the Testers resource.</summary>
        public virtual TestersResource Testers
        {
            get { return testers; }
        }

        /// <summary>The "testers" collection of methods.</summary>
        public class TestersResource
        {
            private const string Resource = "testers";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public TestersResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;

            }



            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="track"></param>
            public virtual GetRequest Get(string packageName, string editId, GetRequest.TrackEnum track)
            {
                return new GetRequest(service, packageName, editId, track);
            }


            public class GetRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.Testers>
            {
                /// <summary>Constructs a new Get request.</summary>
                public GetRequest(Google.Apis.Services.IClientService service, string packageName, string editId, GetRequest.TrackEnum track)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Track = track;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }


                [Google.Apis.Util.RequestParameterAttribute("track", Google.Apis.Util.RequestParameterType.Path)]
                public virtual TrackEnum Track { get; private set; }


                public enum TrackEnum
                {
                    [Google.Apis.Util.StringValueAttribute("alpha")]
                    Alpha,
                    [Google.Apis.Util.StringValueAttribute("beta")]
                    Beta,
                    [Google.Apis.Util.StringValueAttribute("production")]
                    Production,
                    [Google.Apis.Util.StringValueAttribute("rollout")]
                    Rollout,
                }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "get"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/testers/{track}"; }
                }

                /// <summary>Initializes Get parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "track", new Google.Apis.Discovery.Parameter
                        {
                            Name = "track",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }


            /// <param name="body">The body of the request.</param>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="track"></param>
            public virtual PatchRequest Patch(Google.Apis.AndroidPublisher.v2.Data.Testers body, string packageName, string editId, PatchRequest.TrackEnum track)
            {
                return new PatchRequest(service, body, packageName, editId, track);
            }


            public class PatchRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.Testers>
            {
                /// <summary>Constructs a new Patch request.</summary>
                public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.Testers body, string packageName, string editId, PatchRequest.TrackEnum track)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Track = track;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }


                [Google.Apis.Util.RequestParameterAttribute("track", Google.Apis.Util.RequestParameterType.Path)]
                public virtual TrackEnum Track { get; private set; }


                public enum TrackEnum
                {
                    [Google.Apis.Util.StringValueAttribute("alpha")]
                    Alpha,
                    [Google.Apis.Util.StringValueAttribute("beta")]
                    Beta,
                    [Google.Apis.Util.StringValueAttribute("production")]
                    Production,
                    [Google.Apis.Util.StringValueAttribute("rollout")]
                    Rollout,
                }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.AndroidPublisher.v2.Data.Testers Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "patch"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "PATCH"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/testers/{track}"; }
                }

                /// <summary>Initializes Patch parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "track", new Google.Apis.Discovery.Parameter
                        {
                            Name = "track",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }


            /// <param name="body">The body of the request.</param>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="track"></param>
            public virtual UpdateRequest Update(Google.Apis.AndroidPublisher.v2.Data.Testers body, string packageName, string editId, UpdateRequest.TrackEnum track)
            {
                return new UpdateRequest(service, body, packageName, editId, track);
            }


            public class UpdateRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.Testers>
            {
                /// <summary>Constructs a new Update request.</summary>
                public UpdateRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.Testers body, string packageName, string editId, UpdateRequest.TrackEnum track)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Track = track;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }


                [Google.Apis.Util.RequestParameterAttribute("track", Google.Apis.Util.RequestParameterType.Path)]
                public virtual TrackEnum Track { get; private set; }


                public enum TrackEnum
                {
                    [Google.Apis.Util.StringValueAttribute("alpha")]
                    Alpha,
                    [Google.Apis.Util.StringValueAttribute("beta")]
                    Beta,
                    [Google.Apis.Util.StringValueAttribute("production")]
                    Production,
                    [Google.Apis.Util.StringValueAttribute("rollout")]
                    Rollout,
                }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.AndroidPublisher.v2.Data.Testers Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "update"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "PUT"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/testers/{track}"; }
                }

                /// <summary>Initializes Update parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "track", new Google.Apis.Discovery.Parameter
                        {
                            Name = "track",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }
        }
        private readonly TracksResource tracks;

        /// <summary>Gets the Tracks resource.</summary>
        public virtual TracksResource Tracks
        {
            get { return tracks; }
        }

        /// <summary>The "tracks" collection of methods.</summary>
        public class TracksResource
        {
            private const string Resource = "tracks";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public TracksResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;

            }


            /// <summary>Fetches the track configuration for the specified track type. Includes the APK version codes
            /// that are in this track.</summary>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="track">The track type to read or modify.</param>
            public virtual GetRequest Get(string packageName, string editId, GetRequest.TrackEnum track)
            {
                return new GetRequest(service, packageName, editId, track);
            }

            /// <summary>Fetches the track configuration for the specified track type. Includes the APK version codes
            /// that are in this track.</summary>
            public class GetRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.Track>
            {
                /// <summary>Constructs a new Get request.</summary>
                public GetRequest(Google.Apis.Services.IClientService service, string packageName, string editId, GetRequest.TrackEnum track)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Track = track;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The track type to read or modify.</summary>
                [Google.Apis.Util.RequestParameterAttribute("track", Google.Apis.Util.RequestParameterType.Path)]
                public virtual TrackEnum Track { get; private set; }

                /// <summary>The track type to read or modify.</summary>
                public enum TrackEnum
                {
                    [Google.Apis.Util.StringValueAttribute("alpha")]
                    Alpha,
                    [Google.Apis.Util.StringValueAttribute("beta")]
                    Beta,
                    [Google.Apis.Util.StringValueAttribute("production")]
                    Production,
                    [Google.Apis.Util.StringValueAttribute("rollout")]
                    Rollout,
                }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "get"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/tracks/{track}"; }
                }

                /// <summary>Initializes Get parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "track", new Google.Apis.Discovery.Parameter
                        {
                            Name = "track",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Lists all the track configurations for this edit.</summary>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            public virtual ListRequest List(string packageName, string editId)
            {
                return new ListRequest(service, packageName, editId);
            }

            /// <summary>Lists all the track configurations for this edit.</summary>
            public class ListRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.TracksListResponse>
            {
                /// <summary>Constructs a new List request.</summary>
                public ListRequest(Google.Apis.Services.IClientService service, string packageName, string editId)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "list"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/tracks"; }
                }

                /// <summary>Initializes List parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Updates the track configuration for the specified track type. When halted, the rollout track
            /// cannot be updated without adding new APKs, and adding new APKs will cause it to resume. This method
            /// supports patch semantics.</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="track">The track type to read or modify.</param>
            public virtual PatchRequest Patch(Google.Apis.AndroidPublisher.v2.Data.Track body, string packageName, string editId, PatchRequest.TrackEnum track)
            {
                return new PatchRequest(service, body, packageName, editId, track);
            }

            /// <summary>Updates the track configuration for the specified track type. When halted, the rollout track
            /// cannot be updated without adding new APKs, and adding new APKs will cause it to resume. This method
            /// supports patch semantics.</summary>
            public class PatchRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.Track>
            {
                /// <summary>Constructs a new Patch request.</summary>
                public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.Track body, string packageName, string editId, PatchRequest.TrackEnum track)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Track = track;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The track type to read or modify.</summary>
                [Google.Apis.Util.RequestParameterAttribute("track", Google.Apis.Util.RequestParameterType.Path)]
                public virtual TrackEnum Track { get; private set; }

                /// <summary>The track type to read or modify.</summary>
                public enum TrackEnum
                {
                    [Google.Apis.Util.StringValueAttribute("alpha")]
                    Alpha,
                    [Google.Apis.Util.StringValueAttribute("beta")]
                    Beta,
                    [Google.Apis.Util.StringValueAttribute("production")]
                    Production,
                    [Google.Apis.Util.StringValueAttribute("rollout")]
                    Rollout,
                }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.AndroidPublisher.v2.Data.Track Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "patch"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "PATCH"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/tracks/{track}"; }
                }

                /// <summary>Initializes Patch parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "track", new Google.Apis.Discovery.Parameter
                        {
                            Name = "track",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Updates the track configuration for the specified track type. When halted, the rollout track
            /// cannot be updated without adding new APKs, and adding new APKs will cause it to resume.</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</param>
            /// <param name="editId">Unique identifier for this edit.</param>
            /// <param
            /// name="track">The track type to read or modify.</param>
            public virtual UpdateRequest Update(Google.Apis.AndroidPublisher.v2.Data.Track body, string packageName, string editId, UpdateRequest.TrackEnum track)
            {
                return new UpdateRequest(service, body, packageName, editId, track);
            }

            /// <summary>Updates the track configuration for the specified track type. When halted, the rollout track
            /// cannot be updated without adding new APKs, and adding new APKs will cause it to resume.</summary>
            public class UpdateRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.Track>
            {
                /// <summary>Constructs a new Update request.</summary>
                public UpdateRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.Track body, string packageName, string editId, UpdateRequest.TrackEnum track)
                    : base(service)
                {
                    PackageName = packageName;
                    EditId = editId;
                    Track = track;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Unique identifier for the Android app that is being updated; for example,
                /// "com.spiffygame".</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>Unique identifier for this edit.</summary>
                [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string EditId { get; private set; }

                /// <summary>The track type to read or modify.</summary>
                [Google.Apis.Util.RequestParameterAttribute("track", Google.Apis.Util.RequestParameterType.Path)]
                public virtual TrackEnum Track { get; private set; }

                /// <summary>The track type to read or modify.</summary>
                public enum TrackEnum
                {
                    [Google.Apis.Util.StringValueAttribute("alpha")]
                    Alpha,
                    [Google.Apis.Util.StringValueAttribute("beta")]
                    Beta,
                    [Google.Apis.Util.StringValueAttribute("production")]
                    Production,
                    [Google.Apis.Util.StringValueAttribute("rollout")]
                    Rollout,
                }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.AndroidPublisher.v2.Data.Track Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "update"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "PUT"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/edits/{editId}/tracks/{track}"; }
                }

                /// <summary>Initializes Update parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "editId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "editId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "track", new Google.Apis.Discovery.Parameter
                        {
                            Name = "track",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }
        }

        /// <summary>Commits/applies the changes made in this edit back to the app.</summary>
        /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
        /// "com.spiffygame".</param>
        /// <param name="editId">Unique identifier for this edit.</param>
        public virtual CommitRequest Commit(string packageName, string editId)
        {
            return new CommitRequest(service, packageName, editId);
        }

        /// <summary>Commits/applies the changes made in this edit back to the app.</summary>
        public class CommitRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.AppEdit>
        {
            /// <summary>Constructs a new Commit request.</summary>
            public CommitRequest(Google.Apis.Services.IClientService service, string packageName, string editId)
                : base(service)
            {
                PackageName = packageName;
                EditId = editId;
                InitParameters();
            }


            /// <summary>Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</summary>
            [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string PackageName { get; private set; }

            /// <summary>Unique identifier for this edit.</summary>
            [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string EditId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "commit"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{packageName}/edits/{editId}:commit"; }
            }

            /// <summary>Initializes Commit parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "packageName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "packageName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "editId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "editId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Deletes an edit for an app. Creating a new edit will automatically delete any of your previous
        /// edits so this method need only be called if you want to preemptively abandon an edit.</summary>
        /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
        /// "com.spiffygame".</param>
        /// <param name="editId">Unique identifier for this edit.</param>
        public virtual DeleteRequest Delete(string packageName, string editId)
        {
            return new DeleteRequest(service, packageName, editId);
        }

        /// <summary>Deletes an edit for an app. Creating a new edit will automatically delete any of your previous
        /// edits so this method need only be called if you want to preemptively abandon an edit.</summary>
        public class DeleteRequest : AndroidPublisherBaseServiceRequest<string>
        {
            /// <summary>Constructs a new Delete request.</summary>
            public DeleteRequest(Google.Apis.Services.IClientService service, string packageName, string editId)
                : base(service)
            {
                PackageName = packageName;
                EditId = editId;
                InitParameters();
            }


            /// <summary>Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</summary>
            [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string PackageName { get; private set; }

            /// <summary>Unique identifier for this edit.</summary>
            [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string EditId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "delete"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "DELETE"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{packageName}/edits/{editId}"; }
            }

            /// <summary>Initializes Delete parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "packageName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "packageName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "editId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "editId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Returns information about the edit specified. Calls will fail if the edit is no long active (e.g.
        /// has been deleted, superseded or expired).</summary>
        /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
        /// "com.spiffygame".</param>
        /// <param name="editId">Unique identifier for this edit.</param>
        public virtual GetRequest Get(string packageName, string editId)
        {
            return new GetRequest(service, packageName, editId);
        }

        /// <summary>Returns information about the edit specified. Calls will fail if the edit is no long active (e.g.
        /// has been deleted, superseded or expired).</summary>
        public class GetRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.AppEdit>
        {
            /// <summary>Constructs a new Get request.</summary>
            public GetRequest(Google.Apis.Services.IClientService service, string packageName, string editId)
                : base(service)
            {
                PackageName = packageName;
                EditId = editId;
                InitParameters();
            }


            /// <summary>Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</summary>
            [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string PackageName { get; private set; }

            /// <summary>Unique identifier for this edit.</summary>
            [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string EditId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "get"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{packageName}/edits/{editId}"; }
            }

            /// <summary>Initializes Get parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "packageName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "packageName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "editId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "editId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Creates a new edit for an app, populated with the app's current state.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
        /// "com.spiffygame".</param>
        public virtual InsertRequest Insert(Google.Apis.AndroidPublisher.v2.Data.AppEdit body, string packageName)
        {
            return new InsertRequest(service, body, packageName);
        }

        /// <summary>Creates a new edit for an app, populated with the app's current state.</summary>
        public class InsertRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.AppEdit>
        {
            /// <summary>Constructs a new Insert request.</summary>
            public InsertRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.AppEdit body, string packageName)
                : base(service)
            {
                PackageName = packageName;
                Body = body;
                InitParameters();
            }


            /// <summary>Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</summary>
            [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string PackageName { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.AndroidPublisher.v2.Data.AppEdit Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "insert"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{packageName}/edits"; }
            }

            /// <summary>Initializes Insert parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "packageName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "packageName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Checks that the edit can be successfully committed. The edit's changes are not applied to the live
        /// app.</summary>
        /// <param name="packageName">Unique identifier for the Android app that is being updated; for example,
        /// "com.spiffygame".</param>
        /// <param name="editId">Unique identifier for this edit.</param>
        public virtual ValidateRequest Validate(string packageName, string editId)
        {
            return new ValidateRequest(service, packageName, editId);
        }

        /// <summary>Checks that the edit can be successfully committed. The edit's changes are not applied to the live
        /// app.</summary>
        public class ValidateRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.AppEdit>
        {
            /// <summary>Constructs a new Validate request.</summary>
            public ValidateRequest(Google.Apis.Services.IClientService service, string packageName, string editId)
                : base(service)
            {
                PackageName = packageName;
                EditId = editId;
                InitParameters();
            }


            /// <summary>Unique identifier for the Android app that is being updated; for example,
            /// "com.spiffygame".</summary>
            [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string PackageName { get; private set; }

            /// <summary>Unique identifier for this edit.</summary>
            [Google.Apis.Util.RequestParameterAttribute("editId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string EditId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "validate"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{packageName}/edits/{editId}:validate"; }
            }

            /// <summary>Initializes Validate parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "packageName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "packageName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "editId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "editId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }

    /// <summary>The "entitlements" collection of methods.</summary>
    public class EntitlementsResource
    {
        private const string Resource = "entitlements";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public EntitlementsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Lists the user's current inapp item or subscription entitlements</summary>
        /// <param name="packageName">The package name of the application the inapp product was sold in (for example,
        /// 'com.some.thing').</param>
        public virtual ListRequest List(string packageName)
        {
            return new ListRequest(service, packageName);
        }

        /// <summary>Lists the user's current inapp item or subscription entitlements</summary>
        public class ListRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.EntitlementsListResponse>
        {
            /// <summary>Constructs a new List request.</summary>
            public ListRequest(Google.Apis.Services.IClientService service, string packageName)
                : base(service)
            {
                PackageName = packageName;
                InitParameters();
            }


            /// <summary>The package name of the application the inapp product was sold in (for example,
            /// 'com.some.thing').</summary>
            [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string PackageName { get; private set; }


            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<long> MaxResults { get; set; }

            /// <summary>The product id of the inapp product (for example, 'sku1'). This can be used to restrict the
            /// result set.</summary>
            [Google.Apis.Util.RequestParameterAttribute("productId", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string ProductId { get; set; }


            [Google.Apis.Util.RequestParameterAttribute("startIndex", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<long> StartIndex { get; set; }


            [Google.Apis.Util.RequestParameterAttribute("token", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string Token { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "list"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{packageName}/entitlements"; }
            }

            /// <summary>Initializes List parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "packageName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "packageName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "productId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "productId",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "startIndex", new Google.Apis.Discovery.Parameter
                    {
                        Name = "startIndex",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "token", new Google.Apis.Discovery.Parameter
                    {
                        Name = "token",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }

    /// <summary>The "inappproducts" collection of methods.</summary>
    public class InappproductsResource
    {
        private const string Resource = "inappproducts";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public InappproductsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }



        /// <param name="body">The body of the request.</param>
        public virtual BatchRequest Batch(Google.Apis.AndroidPublisher.v2.Data.InappproductsBatchRequest body)
        {
            return new BatchRequest(service, body);
        }


        public class BatchRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.InappproductsBatchResponse>
        {
            /// <summary>Constructs a new Batch request.</summary>
            public BatchRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.InappproductsBatchRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.AndroidPublisher.v2.Data.InappproductsBatchRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "batch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "inappproducts/batch"; }
            }

            /// <summary>Initializes Batch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Delete an in-app product for an app.</summary>
        /// <param name="packageName">Unique identifier for the Android app with the in-app product; for example,
        /// "com.spiffygame".</param>
        /// <param name="sku">Unique identifier for the in-app product.</param>
        public virtual DeleteRequest Delete(string packageName, string sku)
        {
            return new DeleteRequest(service, packageName, sku);
        }

        /// <summary>Delete an in-app product for an app.</summary>
        public class DeleteRequest : AndroidPublisherBaseServiceRequest<string>
        {
            /// <summary>Constructs a new Delete request.</summary>
            public DeleteRequest(Google.Apis.Services.IClientService service, string packageName, string sku)
                : base(service)
            {
                PackageName = packageName;
                Sku = sku;
                InitParameters();
            }


            /// <summary>Unique identifier for the Android app with the in-app product; for example,
            /// "com.spiffygame".</summary>
            [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string PackageName { get; private set; }

            /// <summary>Unique identifier for the in-app product.</summary>
            [Google.Apis.Util.RequestParameterAttribute("sku", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Sku { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "delete"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "DELETE"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{packageName}/inappproducts/{sku}"; }
            }

            /// <summary>Initializes Delete parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "packageName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "packageName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "sku", new Google.Apis.Discovery.Parameter
                    {
                        Name = "sku",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Returns information about the in-app product specified.</summary>
        /// <param name="packageName"></param>
        /// <param name="sku">Unique identifier for the in-app product.</param>
        public virtual GetRequest Get(string packageName, string sku)
        {
            return new GetRequest(service, packageName, sku);
        }

        /// <summary>Returns information about the in-app product specified.</summary>
        public class GetRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.InAppProduct>
        {
            /// <summary>Constructs a new Get request.</summary>
            public GetRequest(Google.Apis.Services.IClientService service, string packageName, string sku)
                : base(service)
            {
                PackageName = packageName;
                Sku = sku;
                InitParameters();
            }



            [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string PackageName { get; private set; }

            /// <summary>Unique identifier for the in-app product.</summary>
            [Google.Apis.Util.RequestParameterAttribute("sku", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Sku { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "get"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{packageName}/inappproducts/{sku}"; }
            }

            /// <summary>Initializes Get parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "packageName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "packageName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "sku", new Google.Apis.Discovery.Parameter
                    {
                        Name = "sku",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Creates a new in-app product for an app.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="packageName">Unique identifier for the Android app; for example, "com.spiffygame".</param>
        public virtual InsertRequest Insert(Google.Apis.AndroidPublisher.v2.Data.InAppProduct body, string packageName)
        {
            return new InsertRequest(service, body, packageName);
        }

        /// <summary>Creates a new in-app product for an app.</summary>
        public class InsertRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.InAppProduct>
        {
            /// <summary>Constructs a new Insert request.</summary>
            public InsertRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.InAppProduct body, string packageName)
                : base(service)
            {
                PackageName = packageName;
                Body = body;
                InitParameters();
            }


            /// <summary>Unique identifier for the Android app; for example, "com.spiffygame".</summary>
            [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string PackageName { get; private set; }

            /// <summary>If true the prices for all regions targeted by the parent app that don't have a price specified
            /// for this in-app product will be auto converted to the target currency based on the default price.
            /// Defaults to false.</summary>
            [Google.Apis.Util.RequestParameterAttribute("autoConvertMissingPrices", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> AutoConvertMissingPrices { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.AndroidPublisher.v2.Data.InAppProduct Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "insert"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{packageName}/inappproducts"; }
            }

            /// <summary>Initializes Insert parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "packageName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "packageName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "autoConvertMissingPrices", new Google.Apis.Discovery.Parameter
                    {
                        Name = "autoConvertMissingPrices",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>List all the in-app products for an Android app, both subscriptions and managed in-app
        /// products..</summary>
        /// <param name="packageName">Unique identifier for the Android app with in-app products; for example,
        /// "com.spiffygame".</param>
        public virtual ListRequest List(string packageName)
        {
            return new ListRequest(service, packageName);
        }

        /// <summary>List all the in-app products for an Android app, both subscriptions and managed in-app
        /// products..</summary>
        public class ListRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.InappproductsListResponse>
        {
            /// <summary>Constructs a new List request.</summary>
            public ListRequest(Google.Apis.Services.IClientService service, string packageName)
                : base(service)
            {
                PackageName = packageName;
                InitParameters();
            }


            /// <summary>Unique identifier for the Android app with in-app products; for example,
            /// "com.spiffygame".</summary>
            [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string PackageName { get; private set; }


            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<long> MaxResults { get; set; }


            [Google.Apis.Util.RequestParameterAttribute("startIndex", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<long> StartIndex { get; set; }


            [Google.Apis.Util.RequestParameterAttribute("token", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string Token { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "list"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{packageName}/inappproducts"; }
            }

            /// <summary>Initializes List parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "packageName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "packageName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "startIndex", new Google.Apis.Discovery.Parameter
                    {
                        Name = "startIndex",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "token", new Google.Apis.Discovery.Parameter
                    {
                        Name = "token",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Updates the details of an in-app product. This method supports patch semantics.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="packageName">Unique identifier for the Android app with the in-app product; for example,
        /// "com.spiffygame".</param>
        /// <param name="sku">Unique identifier for the in-app product.</param>
        public virtual PatchRequest Patch(Google.Apis.AndroidPublisher.v2.Data.InAppProduct body, string packageName, string sku)
        {
            return new PatchRequest(service, body, packageName, sku);
        }

        /// <summary>Updates the details of an in-app product. This method supports patch semantics.</summary>
        public class PatchRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.InAppProduct>
        {
            /// <summary>Constructs a new Patch request.</summary>
            public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.InAppProduct body, string packageName, string sku)
                : base(service)
            {
                PackageName = packageName;
                Sku = sku;
                Body = body;
                InitParameters();
            }


            /// <summary>Unique identifier for the Android app with the in-app product; for example,
            /// "com.spiffygame".</summary>
            [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string PackageName { get; private set; }

            /// <summary>Unique identifier for the in-app product.</summary>
            [Google.Apis.Util.RequestParameterAttribute("sku", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Sku { get; private set; }

            /// <summary>If true the prices for all regions targeted by the parent app that don't have a price specified
            /// for this in-app product will be auto converted to the target currency based on the default price.
            /// Defaults to false.</summary>
            [Google.Apis.Util.RequestParameterAttribute("autoConvertMissingPrices", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> AutoConvertMissingPrices { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.AndroidPublisher.v2.Data.InAppProduct Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "patch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "PATCH"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{packageName}/inappproducts/{sku}"; }
            }

            /// <summary>Initializes Patch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "packageName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "packageName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "sku", new Google.Apis.Discovery.Parameter
                    {
                        Name = "sku",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "autoConvertMissingPrices", new Google.Apis.Discovery.Parameter
                    {
                        Name = "autoConvertMissingPrices",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Updates the details of an in-app product.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="packageName">Unique identifier for the Android app with the in-app product; for example,
        /// "com.spiffygame".</param>
        /// <param name="sku">Unique identifier for the in-app product.</param>
        public virtual UpdateRequest Update(Google.Apis.AndroidPublisher.v2.Data.InAppProduct body, string packageName, string sku)
        {
            return new UpdateRequest(service, body, packageName, sku);
        }

        /// <summary>Updates the details of an in-app product.</summary>
        public class UpdateRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.InAppProduct>
        {
            /// <summary>Constructs a new Update request.</summary>
            public UpdateRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.InAppProduct body, string packageName, string sku)
                : base(service)
            {
                PackageName = packageName;
                Sku = sku;
                Body = body;
                InitParameters();
            }


            /// <summary>Unique identifier for the Android app with the in-app product; for example,
            /// "com.spiffygame".</summary>
            [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string PackageName { get; private set; }

            /// <summary>Unique identifier for the in-app product.</summary>
            [Google.Apis.Util.RequestParameterAttribute("sku", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string Sku { get; private set; }

            /// <summary>If true the prices for all regions targeted by the parent app that don't have a price specified
            /// for this in-app product will be auto converted to the target currency based on the default price.
            /// Defaults to false.</summary>
            [Google.Apis.Util.RequestParameterAttribute("autoConvertMissingPrices", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<bool> AutoConvertMissingPrices { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.AndroidPublisher.v2.Data.InAppProduct Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "update"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "PUT"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{packageName}/inappproducts/{sku}"; }
            }

            /// <summary>Initializes Update parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "packageName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "packageName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "sku", new Google.Apis.Discovery.Parameter
                    {
                        Name = "sku",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "autoConvertMissingPrices", new Google.Apis.Discovery.Parameter
                    {
                        Name = "autoConvertMissingPrices",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }

    /// <summary>The "purchases" collection of methods.</summary>
    public class PurchasesResource
    {
        private const string Resource = "purchases";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public PurchasesResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;
            products = new ProductsResource(service);
            subscriptions = new SubscriptionsResource(service);
            voidedpurchases = new VoidedpurchasesResource(service);

        }

        private readonly ProductsResource products;

        /// <summary>Gets the Products resource.</summary>
        public virtual ProductsResource Products
        {
            get { return products; }
        }

        /// <summary>The "products" collection of methods.</summary>
        public class ProductsResource
        {
            private const string Resource = "products";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public ProductsResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;

            }


            /// <summary>Checks the purchase and consumption status of an inapp item.</summary>
            /// <param name="packageName">The package name of the application the inapp product was sold in (for example,
            /// 'com.some.thing').</param>
            /// <param name="productId">The inapp product SKU (for example,
            /// 'com.some.thing.inapp1').</param>
            /// <param name="token">The token provided to the user's device when the inapp
            /// product was purchased.</param>
            public virtual GetRequest Get(string packageName, string productId, string token)
            {
                return new GetRequest(service, packageName, productId, token);
            }

            /// <summary>Checks the purchase and consumption status of an inapp item.</summary>
            public class GetRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.ProductPurchase>
            {
                /// <summary>Constructs a new Get request.</summary>
                public GetRequest(Google.Apis.Services.IClientService service, string packageName, string productId, string token)
                    : base(service)
                {
                    PackageName = packageName;
                    ProductId = productId;
                    Token = token;
                    InitParameters();
                }


                /// <summary>The package name of the application the inapp product was sold in (for example,
                /// 'com.some.thing').</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>The inapp product SKU (for example, 'com.some.thing.inapp1').</summary>
                [Google.Apis.Util.RequestParameterAttribute("productId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string ProductId { get; private set; }

                /// <summary>The token provided to the user's device when the inapp product was purchased.</summary>
                [Google.Apis.Util.RequestParameterAttribute("token", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Token { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "get"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/purchases/products/{productId}/tokens/{token}"; }
                }

                /// <summary>Initializes Get parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "productId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "productId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "token", new Google.Apis.Discovery.Parameter
                        {
                            Name = "token",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }
        }
        private readonly SubscriptionsResource subscriptions;

        /// <summary>Gets the Subscriptions resource.</summary>
        public virtual SubscriptionsResource Subscriptions
        {
            get { return subscriptions; }
        }

        /// <summary>The "subscriptions" collection of methods.</summary>
        public class SubscriptionsResource
        {
            private const string Resource = "subscriptions";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public SubscriptionsResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;

            }


            /// <summary>Cancels a user's subscription purchase. The subscription remains valid until its expiration
            /// time.</summary>
            /// <param name="packageName">The package name of the application for which this subscription was purchased (for
            /// example, 'com.some.thing').</param>
            /// <param name="subscriptionId">The purchased subscription ID (for example,
            /// 'monthly001').</param>
            /// <param name="token">The token provided to the user's device when the subscription was
            /// purchased.</param>
            public virtual CancelRequest Cancel(string packageName, string subscriptionId, string token)
            {
                return new CancelRequest(service, packageName, subscriptionId, token);
            }

            /// <summary>Cancels a user's subscription purchase. The subscription remains valid until its expiration
            /// time.</summary>
            public class CancelRequest : AndroidPublisherBaseServiceRequest<string>
            {
                /// <summary>Constructs a new Cancel request.</summary>
                public CancelRequest(Google.Apis.Services.IClientService service, string packageName, string subscriptionId, string token)
                    : base(service)
                {
                    PackageName = packageName;
                    SubscriptionId = subscriptionId;
                    Token = token;
                    InitParameters();
                }


                /// <summary>The package name of the application for which this subscription was purchased (for example,
                /// 'com.some.thing').</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>The purchased subscription ID (for example, 'monthly001').</summary>
                [Google.Apis.Util.RequestParameterAttribute("subscriptionId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string SubscriptionId { get; private set; }

                /// <summary>The token provided to the user's device when the subscription was purchased.</summary>
                [Google.Apis.Util.RequestParameterAttribute("token", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Token { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "cancel"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "POST"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:cancel"; }
                }

                /// <summary>Initializes Cancel parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "subscriptionId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "subscriptionId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "token", new Google.Apis.Discovery.Parameter
                        {
                            Name = "token",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Defers a user's subscription purchase until a specified future expiration time.</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="packageName">The package name of the application for which this subscription was purchased (for
            /// example, 'com.some.thing').</param>
            /// <param name="subscriptionId">The purchased subscription ID (for example,
            /// 'monthly001').</param>
            /// <param name="token">The token provided to the user's device when the subscription was
            /// purchased.</param>
            public virtual DeferRequest Defer(Google.Apis.AndroidPublisher.v2.Data.SubscriptionPurchasesDeferRequest body, string packageName, string subscriptionId, string token)
            {
                return new DeferRequest(service, body, packageName, subscriptionId, token);
            }

            /// <summary>Defers a user's subscription purchase until a specified future expiration time.</summary>
            public class DeferRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.SubscriptionPurchasesDeferResponse>
            {
                /// <summary>Constructs a new Defer request.</summary>
                public DeferRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.SubscriptionPurchasesDeferRequest body, string packageName, string subscriptionId, string token)
                    : base(service)
                {
                    PackageName = packageName;
                    SubscriptionId = subscriptionId;
                    Token = token;
                    Body = body;
                    InitParameters();
                }


                /// <summary>The package name of the application for which this subscription was purchased (for example,
                /// 'com.some.thing').</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>The purchased subscription ID (for example, 'monthly001').</summary>
                [Google.Apis.Util.RequestParameterAttribute("subscriptionId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string SubscriptionId { get; private set; }

                /// <summary>The token provided to the user's device when the subscription was purchased.</summary>
                [Google.Apis.Util.RequestParameterAttribute("token", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Token { get; private set; }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.AndroidPublisher.v2.Data.SubscriptionPurchasesDeferRequest Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "defer"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "POST"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:defer"; }
                }

                /// <summary>Initializes Defer parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "subscriptionId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "subscriptionId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "token", new Google.Apis.Discovery.Parameter
                        {
                            Name = "token",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Checks whether a user's subscription purchase is valid and returns its expiry time.</summary>
            /// <param name="packageName">The package name of the application for which this subscription was purchased (for
            /// example, 'com.some.thing').</param>
            /// <param name="subscriptionId">The purchased subscription ID (for example,
            /// 'monthly001').</param>
            /// <param name="token">The token provided to the user's device when the subscription was
            /// purchased.</param>
            public virtual GetRequest Get(string packageName, string subscriptionId, string token)
            {
                return new GetRequest(service, packageName, subscriptionId, token);
            }

            /// <summary>Checks whether a user's subscription purchase is valid and returns its expiry time.</summary>
            public class GetRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.SubscriptionPurchase>
            {
                /// <summary>Constructs a new Get request.</summary>
                public GetRequest(Google.Apis.Services.IClientService service, string packageName, string subscriptionId, string token)
                    : base(service)
                {
                    PackageName = packageName;
                    SubscriptionId = subscriptionId;
                    Token = token;
                    InitParameters();
                }


                /// <summary>The package name of the application for which this subscription was purchased (for example,
                /// 'com.some.thing').</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>The purchased subscription ID (for example, 'monthly001').</summary>
                [Google.Apis.Util.RequestParameterAttribute("subscriptionId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string SubscriptionId { get; private set; }

                /// <summary>The token provided to the user's device when the subscription was purchased.</summary>
                [Google.Apis.Util.RequestParameterAttribute("token", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Token { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "get"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}"; }
                }

                /// <summary>Initializes Get parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "subscriptionId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "subscriptionId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "token", new Google.Apis.Discovery.Parameter
                        {
                            Name = "token",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Refunds a user's subscription purchase, but the subscription remains valid until its expiration
            /// time and it will continue to recur.</summary>
            /// <param name="packageName">The package name of the application for which this subscription was purchased (for
            /// example, 'com.some.thing').</param>
            /// <param name="subscriptionId">The purchased subscription ID (for example,
            /// 'monthly001').</param>
            /// <param name="token">The token provided to the user's device when the subscription was
            /// purchased.</param>
            public virtual RefundRequest Refund(string packageName, string subscriptionId, string token)
            {
                return new RefundRequest(service, packageName, subscriptionId, token);
            }

            /// <summary>Refunds a user's subscription purchase, but the subscription remains valid until its expiration
            /// time and it will continue to recur.</summary>
            public class RefundRequest : AndroidPublisherBaseServiceRequest<string>
            {
                /// <summary>Constructs a new Refund request.</summary>
                public RefundRequest(Google.Apis.Services.IClientService service, string packageName, string subscriptionId, string token)
                    : base(service)
                {
                    PackageName = packageName;
                    SubscriptionId = subscriptionId;
                    Token = token;
                    InitParameters();
                }


                /// <summary>The package name of the application for which this subscription was purchased (for example,
                /// 'com.some.thing').</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>The purchased subscription ID (for example, 'monthly001').</summary>
                [Google.Apis.Util.RequestParameterAttribute("subscriptionId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string SubscriptionId { get; private set; }

                /// <summary>The token provided to the user's device when the subscription was purchased.</summary>
                [Google.Apis.Util.RequestParameterAttribute("token", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Token { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "refund"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "POST"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:refund"; }
                }

                /// <summary>Initializes Refund parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "subscriptionId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "subscriptionId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "token", new Google.Apis.Discovery.Parameter
                        {
                            Name = "token",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Refunds and immediately revokes a user's subscription purchase. Access to the subscription will
            /// be terminated immediately and it will stop recurring.</summary>
            /// <param name="packageName">The package name of the application for which this subscription was purchased (for
            /// example, 'com.some.thing').</param>
            /// <param name="subscriptionId">The purchased subscription ID (for example,
            /// 'monthly001').</param>
            /// <param name="token">The token provided to the user's device when the subscription was
            /// purchased.</param>
            public virtual RevokeRequest Revoke(string packageName, string subscriptionId, string token)
            {
                return new RevokeRequest(service, packageName, subscriptionId, token);
            }

            /// <summary>Refunds and immediately revokes a user's subscription purchase. Access to the subscription will
            /// be terminated immediately and it will stop recurring.</summary>
            public class RevokeRequest : AndroidPublisherBaseServiceRequest<string>
            {
                /// <summary>Constructs a new Revoke request.</summary>
                public RevokeRequest(Google.Apis.Services.IClientService service, string packageName, string subscriptionId, string token)
                    : base(service)
                {
                    PackageName = packageName;
                    SubscriptionId = subscriptionId;
                    Token = token;
                    InitParameters();
                }


                /// <summary>The package name of the application for which this subscription was purchased (for example,
                /// 'com.some.thing').</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>The purchased subscription ID (for example, 'monthly001').</summary>
                [Google.Apis.Util.RequestParameterAttribute("subscriptionId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string SubscriptionId { get; private set; }

                /// <summary>The token provided to the user's device when the subscription was purchased.</summary>
                [Google.Apis.Util.RequestParameterAttribute("token", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Token { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "revoke"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "POST"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:revoke"; }
                }

                /// <summary>Initializes Revoke parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "subscriptionId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "subscriptionId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "token", new Google.Apis.Discovery.Parameter
                        {
                            Name = "token",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }
        }
        private readonly VoidedpurchasesResource voidedpurchases;

        /// <summary>Gets the Voidedpurchases resource.</summary>
        public virtual VoidedpurchasesResource Voidedpurchases
        {
            get { return voidedpurchases; }
        }

        /// <summary>The "voidedpurchases" collection of methods.</summary>
        public class VoidedpurchasesResource
        {
            private const string Resource = "voidedpurchases";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public VoidedpurchasesResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;

            }


            /// <summary>Lists the purchases that were cancelled, refunded or charged-back.</summary>
            /// <param name="packageName">The package name of the application for which voided purchases need to be returned (for
            /// example, 'com.some.thing').</param>
            public virtual ListRequest List(string packageName)
            {
                return new ListRequest(service, packageName);
            }

            /// <summary>Lists the purchases that were cancelled, refunded or charged-back.</summary>
            public class ListRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.VoidedPurchasesListResponse>
            {
                /// <summary>Constructs a new List request.</summary>
                public ListRequest(Google.Apis.Services.IClientService service, string packageName)
                    : base(service)
                {
                    PackageName = packageName;
                    InitParameters();
                }


                /// <summary>The package name of the application for which voided purchases need to be returned (for
                /// example, 'com.some.thing').</summary>
                [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string PackageName { get; private set; }

                /// <summary>The time, in milliseconds since the Epoch, of the newest voided in-app product purchase
                /// that you want to see in the response. The value of this parameter cannot be greater than the current
                /// time and is ignored if a pagination token is set. Default value is current time.</summary>
                [Google.Apis.Util.RequestParameterAttribute("endTime", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<long> EndTime { get; set; }


                [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<long> MaxResults { get; set; }


                [Google.Apis.Util.RequestParameterAttribute("startIndex", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<long> StartIndex { get; set; }

                /// <summary>The time, in milliseconds since the Epoch, of the oldest voided in-app product purchase
                /// that you want to see in the response. The value of this parameter cannot be older than 30 days and
                /// is ignored if a pagination token is set. Default value is current time minus 30 days.</summary>
                [Google.Apis.Util.RequestParameterAttribute("startTime", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<long> StartTime { get; set; }


                [Google.Apis.Util.RequestParameterAttribute("token", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string Token { get; set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "list"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "{packageName}/purchases/voidedpurchases"; }
                }

                /// <summary>Initializes List parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "packageName", new Google.Apis.Discovery.Parameter
                        {
                            Name = "packageName",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "endTime", new Google.Apis.Discovery.Parameter
                        {
                            Name = "endTime",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "maxResults", new Google.Apis.Discovery.Parameter
                        {
                            Name = "maxResults",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "startIndex", new Google.Apis.Discovery.Parameter
                        {
                            Name = "startIndex",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "startTime", new Google.Apis.Discovery.Parameter
                        {
                            Name = "startTime",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "token", new Google.Apis.Discovery.Parameter
                        {
                            Name = "token",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }
        }
    }

    /// <summary>The "reviews" collection of methods.</summary>
    public class ReviewsResource
    {
        private const string Resource = "reviews";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public ReviewsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;

        }


        /// <summary>Returns a single review.</summary>
        /// <param name="packageName">Unique identifier for the Android app for which we want reviews; for example,
        /// "com.spiffygame".</param>
        /// <param name="reviewId"></param>
        public virtual GetRequest Get(string packageName, string reviewId)
        {
            return new GetRequest(service, packageName, reviewId);
        }

        /// <summary>Returns a single review.</summary>
        public class GetRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.Review>
        {
            /// <summary>Constructs a new Get request.</summary>
            public GetRequest(Google.Apis.Services.IClientService service, string packageName, string reviewId)
                : base(service)
            {
                PackageName = packageName;
                ReviewId = reviewId;
                InitParameters();
            }


            /// <summary>Unique identifier for the Android app for which we want reviews; for example,
            /// "com.spiffygame".</summary>
            [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string PackageName { get; private set; }


            [Google.Apis.Util.RequestParameterAttribute("reviewId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ReviewId { get; private set; }


            [Google.Apis.Util.RequestParameterAttribute("translationLanguage", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string TranslationLanguage { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "get"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{packageName}/reviews/{reviewId}"; }
            }

            /// <summary>Initializes Get parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "packageName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "packageName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "reviewId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "reviewId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "translationLanguage", new Google.Apis.Discovery.Parameter
                    {
                        Name = "translationLanguage",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Returns a list of reviews. Only reviews from last week will be returned.</summary>
        /// <param name="packageName">Unique identifier for the Android app for which we want reviews; for example,
        /// "com.spiffygame".</param>
        public virtual ListRequest List(string packageName)
        {
            return new ListRequest(service, packageName);
        }

        /// <summary>Returns a list of reviews. Only reviews from last week will be returned.</summary>
        public class ListRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.ReviewsListResponse>
        {
            /// <summary>Constructs a new List request.</summary>
            public ListRequest(Google.Apis.Services.IClientService service, string packageName)
                : base(service)
            {
                PackageName = packageName;
                InitParameters();
            }


            /// <summary>Unique identifier for the Android app for which we want reviews; for example,
            /// "com.spiffygame".</summary>
            [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string PackageName { get; private set; }


            [Google.Apis.Util.RequestParameterAttribute("maxResults", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<long> MaxResults { get; set; }


            [Google.Apis.Util.RequestParameterAttribute("startIndex", Google.Apis.Util.RequestParameterType.Query)]
            public virtual System.Nullable<long> StartIndex { get; set; }


            [Google.Apis.Util.RequestParameterAttribute("token", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string Token { get; set; }


            [Google.Apis.Util.RequestParameterAttribute("translationLanguage", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string TranslationLanguage { get; set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "list"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{packageName}/reviews"; }
            }

            /// <summary>Initializes List parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "packageName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "packageName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "maxResults", new Google.Apis.Discovery.Parameter
                    {
                        Name = "maxResults",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "startIndex", new Google.Apis.Discovery.Parameter
                    {
                        Name = "startIndex",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "token", new Google.Apis.Discovery.Parameter
                    {
                        Name = "token",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "translationLanguage", new Google.Apis.Discovery.Parameter
                    {
                        Name = "translationLanguage",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Reply to a single review, or update an existing reply.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="packageName">Unique identifier for the Android app for which we want reviews; for example,
        /// "com.spiffygame".</param>
        /// <param name="reviewId"></param>
        public virtual ReplyRequest Reply(Google.Apis.AndroidPublisher.v2.Data.ReviewsReplyRequest body, string packageName, string reviewId)
        {
            return new ReplyRequest(service, body, packageName, reviewId);
        }

        /// <summary>Reply to a single review, or update an existing reply.</summary>
        public class ReplyRequest : AndroidPublisherBaseServiceRequest<Google.Apis.AndroidPublisher.v2.Data.ReviewsReplyResponse>
        {
            /// <summary>Constructs a new Reply request.</summary>
            public ReplyRequest(Google.Apis.Services.IClientService service, Google.Apis.AndroidPublisher.v2.Data.ReviewsReplyRequest body, string packageName, string reviewId)
                : base(service)
            {
                PackageName = packageName;
                ReviewId = reviewId;
                Body = body;
                InitParameters();
            }


            /// <summary>Unique identifier for the Android app for which we want reviews; for example,
            /// "com.spiffygame".</summary>
            [Google.Apis.Util.RequestParameterAttribute("packageName", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string PackageName { get; private set; }


            [Google.Apis.Util.RequestParameterAttribute("reviewId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string ReviewId { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.AndroidPublisher.v2.Data.ReviewsReplyRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "reply"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "{packageName}/reviews/{reviewId}:reply"; }
            }

            /// <summary>Initializes Reply parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "packageName", new Google.Apis.Discovery.Parameter
                    {
                        Name = "packageName",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "reviewId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "reviewId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }
}

namespace Google.Apis.AndroidPublisher.v2.Data
{    

    public class Apk : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Information about the binary payload of this APK.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("binary")]
        public virtual ApkBinary Binary { get; set; } 

        /// <summary>The version code of the APK, as specified in the APK's manifest file.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("versionCode")]
        public virtual System.Nullable<int> VersionCode { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Represents the binary payload of an APK.</summary>
    public class ApkBinary : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A sha1 hash of the APK payload, encoded as a hex string and matching the output of the sha1sum
        /// command.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sha1")]
        public virtual string Sha1 { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ApkListing : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The language code, in BCP 47 format (eg "en-US").</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("language")]
        public virtual string Language { get; set; } 

        /// <summary>Describe what's new in your APK.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("recentChanges")]
        public virtual string RecentChanges { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ApkListingsListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "androidpublisher#apkListingsListResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("listings")]
        public virtual System.Collections.Generic.IList<ApkListing> Listings { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ApksAddExternallyHostedRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The definition of the externally-hosted APK and where it is located.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("externallyHostedApk")]
        public virtual ExternallyHostedApk ExternallyHostedApk { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ApksAddExternallyHostedResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The definition of the externally-hosted APK and where it is located.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("externallyHostedApk")]
        public virtual ExternallyHostedApk ExternallyHostedApk { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ApksListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("apks")]
        public virtual System.Collections.Generic.IList<Apk> Apks { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "androidpublisher#apksListResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class AppDetails : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The user-visible support email for this app.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("contactEmail")]
        public virtual string ContactEmail { get; set; } 

        /// <summary>The user-visible support telephone number for this app.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("contactPhone")]
        public virtual string ContactPhone { get; set; } 

        /// <summary>The user-visible website for this app.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("contactWebsite")]
        public virtual string ContactWebsite { get; set; } 

        /// <summary>Default language code, in BCP 47 format (eg "en-US").</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("defaultLanguage")]
        public virtual string DefaultLanguage { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Represents an edit of an app. An edit allows clients to make multiple changes before committing them in
    /// one operation.</summary>
    public class AppEdit : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The time at which the edit will expire and will be no longer valid for use in any subsequent API
        /// calls (encoded as seconds since the Epoch).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("expiryTimeSeconds")]
        public virtual string ExpiryTimeSeconds { get; set; } 

        /// <summary>The ID of the edit that can be used in subsequent API calls.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Comment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A comment from a developer.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("developerComment")]
        public virtual DeveloperComment DeveloperComment { get; set; } 

        /// <summary>A comment from a user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("userComment")]
        public virtual UserComment UserComment { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Represents a deobfuscation file.</summary>
    public class DeobfuscationFile : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The type of the deobfuscation file.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("symbolType")]
        public virtual string SymbolType { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class DeobfuscationFilesUploadResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("deobfuscationFile")]
        public virtual DeobfuscationFile DeobfuscationFile { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class DeveloperComment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The last time at which this comment was updated.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lastModified")]
        public virtual Timestamp LastModified { get; set; } 

        /// <summary>The content of the comment, i.e. reply body.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("text")]
        public virtual string Text { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class DeviceMetadata : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Device CPU make e.g. "Qualcomm"</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("cpuMake")]
        public virtual string CpuMake { get; set; } 

        /// <summary>Device CPU model e.g. "MSM8974"</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("cpuModel")]
        public virtual string CpuModel { get; set; } 

        /// <summary>Device class (e.g. tablet)</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("deviceClass")]
        public virtual string DeviceClass { get; set; } 

        /// <summary>OpenGL version</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("glEsVersion")]
        public virtual System.Nullable<int> GlEsVersion { get; set; } 

        /// <summary>Device manufacturer (e.g. Motorola)</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("manufacturer")]
        public virtual string Manufacturer { get; set; } 

        /// <summary>Comma separated list of native platforms (e.g. "arm", "arm7")</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nativePlatform")]
        public virtual string NativePlatform { get; set; } 

        /// <summary>Device model name (e.g. Droid)</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("productName")]
        public virtual string ProductName { get; set; } 

        /// <summary>Device RAM in Megabytes e.g. "2048"</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("ramMb")]
        public virtual System.Nullable<int> RamMb { get; set; } 

        /// <summary>Screen density in DPI</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("screenDensityDpi")]
        public virtual System.Nullable<int> ScreenDensityDpi { get; set; } 

        /// <summary>Screen height in pixels</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("screenHeightPx")]
        public virtual System.Nullable<int> ScreenHeightPx { get; set; } 

        /// <summary>Screen width in pixels</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("screenWidthPx")]
        public virtual System.Nullable<int> ScreenWidthPx { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>An Entitlement resource indicates a user's current entitlement to an inapp item or
    /// subscription.</summary>
    public class Entitlement : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>This kind represents an entitlement object in the androidpublisher service.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The SKU of the product.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("productId")]
        public virtual string ProductId { get; set; } 

        /// <summary>The type of the inapp product. Possible values are: - In-app item: "inapp" - Subscription:
        /// "subs"</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("productType")]
        public virtual string ProductType { get; set; } 

        /// <summary>The token which can be verified using the subscriptions or products API.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("token")]
        public virtual string Token { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class EntitlementsListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("pageInfo")]
        public virtual PageInfo PageInfo { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("resources")]
        public virtual System.Collections.Generic.IList<Entitlement> Resources { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("tokenPagination")]
        public virtual TokenPagination TokenPagination { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ExpansionFile : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>If set this field indicates that this APK has an Expansion File uploaded to it: this APK does not
        /// reference another APK's Expansion File. The field's value is the size of the uploaded Expansion File in
        /// bytes.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fileSize")]
        public virtual System.Nullable<long> FileSize { get; set; } 

        /// <summary>If set this APK's Expansion File references another APK's Expansion File. The file_size field will
        /// not be set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("referencesVersion")]
        public virtual System.Nullable<int> ReferencesVersion { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ExpansionFilesUploadResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("expansionFile")]
        public virtual ExpansionFile ExpansionFile { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Defines an APK available for this application that is hosted externally and not uploaded to Google
    /// Play. This function is only available to enterprises who are using Google Play for Work, and whos application is
    /// restricted to the enterprise private channel</summary>
    public class ExternallyHostedApk : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The application label.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("applicationLabel")]
        public virtual string ApplicationLabel { get; set; } 

        /// <summary>A certificate (or array of certificates if a certificate-chain is used) used to signed this APK,
        /// represented as a base64 encoded byte array.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("certificateBase64s")]
        public virtual System.Collections.Generic.IList<string> CertificateBase64s { get; set; } 

        /// <summary>The URL at which the APK is hosted. This must be an https URL.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("externallyHostedUrl")]
        public virtual string ExternallyHostedUrl { get; set; } 

        /// <summary>The SHA1 checksum of this APK, represented as a base64 encoded byte array.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fileSha1Base64")]
        public virtual string FileSha1Base64 { get; set; } 

        /// <summary>The SHA256 checksum of this APK, represented as a base64 encoded byte array.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fileSha256Base64")]
        public virtual string FileSha256Base64 { get; set; } 

        /// <summary>The file size in bytes of this APK.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fileSize")]
        public virtual System.Nullable<long> FileSize { get; set; } 

        /// <summary>The icon image from the APK, as a base64 encoded byte array.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("iconBase64")]
        public virtual string IconBase64 { get; set; } 

        /// <summary>The maximum SDK supported by this APK (optional).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("maximumSdk")]
        public virtual System.Nullable<int> MaximumSdk { get; set; } 

        /// <summary>The minimum SDK targeted by this APK.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("minimumSdk")]
        public virtual System.Nullable<int> MinimumSdk { get; set; } 

        /// <summary>The native code environments supported by this APK (optional).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nativeCodes")]
        public virtual System.Collections.Generic.IList<string> NativeCodes { get; set; } 

        /// <summary>The package name.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("packageName")]
        public virtual string PackageName { get; set; } 

        /// <summary>The features required by this APK (optional).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("usesFeatures")]
        public virtual System.Collections.Generic.IList<string> UsesFeatures { get; set; } 

        /// <summary>The permissions requested by this APK.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("usesPermissions")]
        public virtual System.Collections.Generic.IList<ExternallyHostedApkUsesPermission> UsesPermissions { get; set; } 

        /// <summary>The version code of this APK.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("versionCode")]
        public virtual System.Nullable<int> VersionCode { get; set; } 

        /// <summary>The version name of this APK.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("versionName")]
        public virtual string VersionName { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A permission used by this APK.</summary>
    public class ExternallyHostedApkUsesPermission : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Optionally, the maximum SDK version for which the permission is required.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("maxSdkVersion")]
        public virtual System.Nullable<int> MaxSdkVersion { get; set; } 

        /// <summary>The name of the permission requested.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Image : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A unique id representing this image.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>A sha1 hash of the image that was uploaded.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sha1")]
        public virtual string Sha1 { get; set; } 

        /// <summary>A URL that will serve a preview of the image.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("url")]
        public virtual string Url { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ImagesDeleteAllResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("deleted")]
        public virtual System.Collections.Generic.IList<Image> Deleted { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ImagesListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("images")]
        public virtual System.Collections.Generic.IList<Image> Images { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ImagesUploadResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("image")]
        public virtual Image Image { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class InAppProduct : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The default language of the localized data, as defined by BCP 47. e.g. "en-US", "en-GB".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("defaultLanguage")]
        public virtual string DefaultLanguage { get; set; } 

        /// <summary>Default price cannot be zero. In-app products can never be free. Default price is always in the
        /// developer's Checkout merchant currency.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("defaultPrice")]
        public virtual Price DefaultPrice { get; set; } 

        /// <summary>List of localized title and description data.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("listings")]
        public virtual System.Collections.Generic.IDictionary<string,InAppProductListing> Listings { get; set; } 

        /// <summary>The package name of the parent app.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("packageName")]
        public virtual string PackageName { get; set; } 

        /// <summary>Prices per buyer region. None of these prices should be zero. In-app products can never be
        /// free.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("prices")]
        public virtual System.Collections.Generic.IDictionary<string,Price> Prices { get; set; } 

        /// <summary>Purchase type enum value. Unmodifiable after creation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("purchaseType")]
        public virtual string PurchaseType { get; set; } 

        /// <summary>Definition of a season for a seasonal subscription. Can be defined only for yearly
        /// subscriptions.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("season")]
        public virtual Season Season { get; set; } 

        /// <summary>The stock-keeping-unit (SKU) of the product, unique within an app.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sku")]
        public virtual string Sku { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("status")]
        public virtual string Status { get; set; } 

        /// <summary>Subscription period, specified in ISO 8601 format. Acceptable values are "P1W" (one week), "P1M"
        /// (one month), "P3M" (three months), "P6M" (six months), and "P1Y" (one year).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("subscriptionPeriod")]
        public virtual string SubscriptionPeriod { get; set; } 

        /// <summary>Trial period, specified in ISO 8601 format. Acceptable values are anything between "P7D" (seven
        /// days) and "P999D" (999 days). Seasonal subscriptions cannot have a trial period.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("trialPeriod")]
        public virtual string TrialPeriod { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class InAppProductListing : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("description")]
        public virtual string Description { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("title")]
        public virtual string Title { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class InappproductsBatchRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("entrys")]
        public virtual System.Collections.Generic.IList<InappproductsBatchRequestEntry> Entrys { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class InappproductsBatchRequestEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("inappproductsinsertrequest")]
        public virtual InappproductsInsertRequest Inappproductsinsertrequest { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("inappproductsupdaterequest")]
        public virtual InappproductsUpdateRequest Inappproductsupdaterequest { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("methodName")]
        public virtual string MethodName { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class InappproductsBatchResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("entrys")]
        public virtual System.Collections.Generic.IList<InappproductsBatchResponseEntry> Entrys { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "androidpublisher#inappproductsBatchResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class InappproductsBatchResponseEntry : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("batchId")]
        public virtual System.Nullable<long> BatchId { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("inappproductsinsertresponse")]
        public virtual InappproductsInsertResponse Inappproductsinsertresponse { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("inappproductsupdateresponse")]
        public virtual InappproductsUpdateResponse Inappproductsupdateresponse { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class InappproductsInsertRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("inappproduct")]
        public virtual InAppProduct Inappproduct { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class InappproductsInsertResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("inappproduct")]
        public virtual InAppProduct Inappproduct { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class InappproductsListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("inappproduct")]
        public virtual System.Collections.Generic.IList<InAppProduct> Inappproduct { get; set; } 

        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "androidpublisher#inappproductsListResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("pageInfo")]
        public virtual PageInfo PageInfo { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("tokenPagination")]
        public virtual TokenPagination TokenPagination { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class InappproductsUpdateRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("inappproduct")]
        public virtual InAppProduct Inappproduct { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class InappproductsUpdateResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("inappproduct")]
        public virtual InAppProduct Inappproduct { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Listing : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Full description of the app; this may be up to 4000 characters in length.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("fullDescription")]
        public virtual string FullDescription { get; set; } 

        /// <summary>Language localization code (for example, "de-AT" for Austrian German).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("language")]
        public virtual string Language { get; set; } 

        /// <summary>Short description of the app (previously known as promo text); this may be up to 80 characters in
        /// length.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shortDescription")]
        public virtual string ShortDescription { get; set; } 

        /// <summary>App's localized title.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("title")]
        public virtual string Title { get; set; } 

        /// <summary>URL of a promotional YouTube video for the app.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("video")]
        public virtual string Video { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ListingsListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "androidpublisher#listingsListResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("listings")]
        public virtual System.Collections.Generic.IList<Listing> Listings { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class MonthDay : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Day of a month, value in [1, 31] range. Valid range depends on the specified month.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("day")]
        public virtual System.Nullable<long> Day { get; set; } 

        /// <summary>Month of a year. e.g. 1 = JAN, 2 = FEB etc.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("month")]
        public virtual System.Nullable<long> Month { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class PageInfo : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("resultPerPage")]
        public virtual System.Nullable<int> ResultPerPage { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("startIndex")]
        public virtual System.Nullable<int> StartIndex { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("totalResults")]
        public virtual System.Nullable<int> TotalResults { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Price : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>3 letter Currency code, as defined by ISO 4217.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("currency")]
        public virtual string Currency { get; set; } 

        /// <summary>The price in millionths of the currency base unit represented as a string.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("priceMicros")]
        public virtual string PriceMicros { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A ProductPurchase resource indicates the status of a user's inapp product purchase.</summary>
    public class ProductPurchase : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The consumption state of the inapp product. Possible values are: - Yet to be consumed -
        /// Consumed</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("consumptionState")]
        public virtual System.Nullable<int> ConsumptionState { get; set; } 

        /// <summary>A developer-specified string that contains supplemental information about an order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("developerPayload")]
        public virtual string DeveloperPayload { get; set; } 

        /// <summary>This kind represents an inappPurchase object in the androidpublisher service.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The purchase state of the order. Possible values are: - Purchased - Cancelled</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("purchaseState")]
        public virtual System.Nullable<int> PurchaseState { get; set; } 

        /// <summary>The time the product was purchased, in milliseconds since the epoch (Jan 1, 1970).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("purchaseTimeMillis")]
        public virtual System.Nullable<long> PurchaseTimeMillis { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Prorate : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Default price cannot be zero and must be less than the full subscription price. Default price is
        /// always in the developer's Checkout merchant currency. Targeted countries have their prices set automatically
        /// based on the default_price.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("defaultPrice")]
        public virtual Price DefaultPrice { get; set; } 

        /// <summary>Defines the first day on which the price takes effect.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("start")]
        public virtual MonthDay Start { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Review : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The name of the user who wrote the review.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("authorName")]
        public virtual string AuthorName { get; set; } 

        /// <summary>A repeated field containing comments for the review.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("comments")]
        public virtual System.Collections.Generic.IList<Comment> Comments { get; set; } 

        /// <summary>Unique identifier for this review.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reviewId")]
        public virtual string ReviewId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ReviewReplyResult : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The time at which the reply took effect.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lastEdited")]
        public virtual Timestamp LastEdited { get; set; } 

        /// <summary>The reply text that was applied.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("replyText")]
        public virtual string ReplyText { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ReviewsListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("pageInfo")]
        public virtual PageInfo PageInfo { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("reviews")]
        public virtual System.Collections.Generic.IList<Review> Reviews { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("tokenPagination")]
        public virtual TokenPagination TokenPagination { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ReviewsReplyRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The text to set as the reply. Replies of more than approximately 350 characters will be rejected.
        /// HTML tags will be stripped.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("replyText")]
        public virtual string ReplyText { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class ReviewsReplyResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("result")]
        public virtual ReviewReplyResult Result { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Season : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Inclusive end date of the recurrence period.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("end")]
        public virtual MonthDay End { get; set; } 

        /// <summary>Optionally present list of prorations for the season. Each proration is a one-off discounted entry
        /// into a subscription. Each proration contains the first date on which the discount is available and the new
        /// pricing information.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("prorations")]
        public virtual System.Collections.Generic.IList<Prorate> Prorations { get; set; } 

        /// <summary>Inclusive start date of the recurrence period.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("start")]
        public virtual MonthDay Start { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A SubscriptionDeferralInfo contains the data needed to defer a subscription purchase to a future expiry
    /// time.</summary>
    public class SubscriptionDeferralInfo : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The desired next expiry time to assign to the subscription, in milliseconds since the Epoch. The
        /// given time must be later/greater than the current expiry time for the subscription.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("desiredExpiryTimeMillis")]
        public virtual System.Nullable<long> DesiredExpiryTimeMillis { get; set; } 

        /// <summary>The expected expiry time for the subscription. If the current expiry time for the subscription is
        /// not the value specified here, the deferral will not occur.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("expectedExpiryTimeMillis")]
        public virtual System.Nullable<long> ExpectedExpiryTimeMillis { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A SubscriptionPurchase resource indicates the status of a user's subscription purchase.</summary>
    public class SubscriptionPurchase : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Whether the subscription will automatically be renewed when it reaches its current expiry
        /// time.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("autoRenewing")]
        public virtual System.Nullable<bool> AutoRenewing { get; set; } 

        /// <summary>The reason why a subscription was cancelled or is not auto-renewing. Possible values are: - User
        /// cancelled the subscription - Subscription was cancelled by the system, for example because of a billing
        /// problem</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("cancelReason")]
        public virtual System.Nullable<int> CancelReason { get; set; } 

        /// <summary>ISO 3166-1 alpha-2 billing country/region code of the user at the time the subscription was
        /// granted.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("countryCode")]
        public virtual string CountryCode { get; set; } 

        /// <summary>A developer-specified string that contains supplemental information about an order.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("developerPayload")]
        public virtual string DeveloperPayload { get; set; } 

        /// <summary>Time at which the subscription will expire, in milliseconds since the Epoch.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("expiryTimeMillis")]
        public virtual System.Nullable<long> ExpiryTimeMillis { get; set; } 

        /// <summary>This kind represents a subscriptionPurchase object in the androidpublisher service.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The payment state of the subscription. Possible values are: - Payment pending - Payment
        /// received</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("paymentState")]
        public virtual System.Nullable<int> PaymentState { get; set; } 

        /// <summary>Price of the subscription, not including tax. Price is expressed in micro-units, where 1,000,000
        /// micro-units represents one unit of the currency. For example, if the subscription price is €1.99,
        /// price_amount_micros is 1990000.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("priceAmountMicros")]
        public virtual System.Nullable<long> PriceAmountMicros { get; set; } 

        /// <summary>ISO 4217 currency code for the subscription price. For example, if the price is specified in
        /// British pounds sterling, price_currency_code is "GBP".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("priceCurrencyCode")]
        public virtual string PriceCurrencyCode { get; set; } 

        /// <summary>Time at which the subscription was granted, in milliseconds since the Epoch.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("startTimeMillis")]
        public virtual System.Nullable<long> StartTimeMillis { get; set; } 

        /// <summary>The time at which the subscription was canceled by the user, in milliseconds since the epoch. Only
        /// present if cancelReason is 0.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("userCancellationTimeMillis")]
        public virtual System.Nullable<long> UserCancellationTimeMillis { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class SubscriptionPurchasesDeferRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The information about the new desired expiry time for the subscription.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("deferralInfo")]
        public virtual SubscriptionDeferralInfo DeferralInfo { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class SubscriptionPurchasesDeferResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The new expiry time for the subscription in milliseconds since the Epoch.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("newExpiryTimeMillis")]
        public virtual System.Nullable<long> NewExpiryTimeMillis { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Testers : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("googleGroups")]
        public virtual System.Collections.Generic.IList<string> GoogleGroups { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("googlePlusCommunities")]
        public virtual System.Collections.Generic.IList<string> GooglePlusCommunities { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Timestamp : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("nanos")]
        public virtual System.Nullable<int> Nanos { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("seconds")]
        public virtual System.Nullable<long> Seconds { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class TokenPagination : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("previousPageToken")]
        public virtual string PreviousPageToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class Track : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("track")]
        public virtual string TrackValue { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("userFraction")]
        public virtual System.Nullable<double> UserFraction { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("versionCodes")]
        public virtual System.Collections.Generic.IList<System.Nullable<int>> VersionCodes { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class TracksListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Identifies what kind of resource this is. Value: the fixed string
        /// "androidpublisher#tracksListResponse".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("tracks")]
        public virtual System.Collections.Generic.IList<Track> Tracks { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class UserComment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Integer Android SDK version of the user's device at the time the review was written, e.g. 23 is
        /// Marshmallow. May be absent.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("androidOsVersion")]
        public virtual System.Nullable<int> AndroidOsVersion { get; set; } 

        /// <summary>Integer version code of the app as installed at the time the review was written. May be
        /// absent.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("appVersionCode")]
        public virtual System.Nullable<int> AppVersionCode { get; set; } 

        /// <summary>String version name of the app as installed at the time the review was written. May be
        /// absent.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("appVersionName")]
        public virtual string AppVersionName { get; set; } 

        /// <summary>Codename for the reviewer's device, e.g. klte, flounder. May be absent.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("device")]
        public virtual string Device { get; set; } 

        /// <summary>Some information about the characteristics of the user's device</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("deviceMetadata")]
        public virtual DeviceMetadata DeviceMetadata { get; set; } 

        /// <summary>The last time at which this comment was updated.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("lastModified")]
        public virtual Timestamp LastModified { get; set; } 

        /// <summary>Untranslated text of the review, in the case where the review has been translated. If the review
        /// has not been translated this is left blank.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("originalText")]
        public virtual string OriginalText { get; set; } 

        /// <summary>Language code for the reviewer. This is taken from the device settings so is not guaranteed to
        /// match the language the review is written in. May be absent.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("reviewerLanguage")]
        public virtual string ReviewerLanguage { get; set; } 

        /// <summary>The star rating associated with the review, from 1 to 5.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("starRating")]
        public virtual System.Nullable<int> StarRating { get; set; } 

        /// <summary>The content of the comment, i.e. review body. In some cases users have been able to write a review
        /// with separate title and body; in those cases the title and body are concatenated and separated by a tab
        /// character.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("text")]
        public virtual string Text { get; set; } 

        /// <summary>Number of users who have given this review a thumbs down</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("thumbsDownCount")]
        public virtual System.Nullable<int> ThumbsDownCount { get; set; } 

        /// <summary>Number of users who have given this review a thumbs up</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("thumbsUpCount")]
        public virtual System.Nullable<int> ThumbsUpCount { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A VoidedPurchase resource indicates a purchase that was either cancelled/refunded/charged-
    /// back.</summary>
    public class VoidedPurchase : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>This kind represents a voided purchase object in the androidpublisher service.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; } 

        /// <summary>The time at which the purchase was made, in milliseconds since the epoch (Jan 1, 1970).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("purchaseTimeMillis")]
        public virtual System.Nullable<long> PurchaseTimeMillis { get; set; } 

        /// <summary>The token that was generated when a purchase was made. This uniquely identifies a
        /// purchase.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("purchaseToken")]
        public virtual string PurchaseToken { get; set; } 

        /// <summary>The time at which the purchase was cancelled/refunded/charged-back, in milliseconds since the epoch
        /// (Jan 1, 1970).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("voidedTimeMillis")]
        public virtual System.Nullable<long> VoidedTimeMillis { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    public class VoidedPurchasesListResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("pageInfo")]
        public virtual PageInfo PageInfo { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("tokenPagination")]
        public virtual TokenPagination TokenPagination { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("voidedPurchases")]
        public virtual System.Collections.Generic.IList<VoidedPurchase> VoidedPurchases { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }
}
